Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: PHP: Syntaksivirhe netistä kopioidussa palautelomakkeessa?

sleepout [31.08.2014 14:30:43]

#

On vähän muunneltu versio tästä: "http://www.findomain.org/ohjeita/palautelomake/index.php". Tulee seuraava ilmoitus kun yritän käyttää lomaketta.

"Parse error: syntax error, unexpected '") { header("' (T_CONSTANT_ENCAPSED_STRING) in /var/www/virtual/sleepout9.arkku.net/htdocs/kasittelija.php on line 13"

yhteydenotto.php

<?php include("header.php") ?>

    <table border="0">

        <tr>
            <td>

<form method="get" action="kasittelija.php">
       <p>Etunimi<input type="text" name="etunimi" size="10" ></p>
       <p>Sukunimi<input type="text" name="sukunimi" size="10" ></p>
       <p>Sähköposti<input type="email" name="sahkoposti" size="10"></p>
       <p>Asia<input type="radio" name="palaute">Palaute <input type="radio" name="tilaus">Tilaus </p>
       <p>Viesti <textarea name="viestikentta" cols="40" rows="3" ></textarea></p>
       <p><br><input type="submit" name="painike" value="lähetä" name="painike"></p>
</form>

              </td>
            <td valign="top">
                <p>Voit valita lähetystavan "palaute" tai "tilaus", mikäli olet ostamassa multa palvelua, tai antamassa palautetta.</p>
                <p></p>
          </td>
        </tr>
    </table>

<?php include("footer.php") ?>

kasittelija.php

<html>
<head>

<?php

    //luetaan lomakkeesta muuttujiin

$etunimi = $_GET["etunimi"];
$sukunimi = $_GET["sukunimi"];
$sahkoposti = $_GET["sahkoposti"];
$palaute = $_GET["palaute"];
$tilaus = $_GET["tilaus"];
$viestikentta = $_GET["viestikentta"];

if($etunimi="") { header("Location: virhesivu.php; }
if ($sukunimi="") { header("Location: virhesivu.php; }
if($sahkoposti="") { header("Location: virhesivu.php; }
if($palaute="") { header("Location: virhesivu.php; }
if($tilaus="") { header("Location: virhesivu.php; }
if($viestikentta=""){ header("Location: virhesivu.php; }

 $etunimi = strip_tags($etunimi);
 $sukunimi = strip_tags($sukunimi);

    if (eregi("\r",$etunimi) || eregi("\n",$etunimi)){ die("Possible hacking!"); }
    if (eregi("\r",$sukunimi) || eregi("\n",$sukunimi)){ die("Possible hacking!"); }

 $palaute = strip_tags($palaute);
 $sahkoposti = strip_tags($sahkoposti);
 $tilaus = strip_tags($tilaus);

if (eregi("\r",$sahkoposti) || eregi("\n",$sahkoposti)){ die("Possible hacking!"); }

// Vastaanottajan sähköpostiosoite:
$osoitettu = "petri.vaha-ruohola@live.fi";

// Viestin otsikko
$aihe = "Otsikko";

// Muodostetaan viestiosa
$viesti =
"Etunimi: ".$etunimi."\n
 Sukunimi: ".$sukunimi."\n
 Sähköposti: ".$sahkoposti."\n
 Palaute: ".$palaute."\n ";

// Lähetetään tiedot sähköpostina:
mail ($osoitettu, $aihe, $viesti,"From: mista@omadomain.com\r\n"."Reply-to: ".$sahkoposti."\r\n");

?>

Lisäys: Mitenkä noi radio-napit otetaan mukaan käsittelyyn? Ne varmaankin on väärin..

Lisäys: Mikä funktio on "eregi"? En oikein tajua php.netin vastausta...

Mod. korjasi oikeat kooditagit ja poisti rumat ja tarpeettomat =====-rivit.

The Alchemist [31.08.2014 14:52:55]

#

Tuo kopioimasi "ohje" on kasa paskaa. Se on sekä vanhentunut että muutenkin täysin kaiken järjen vastaisesti tehty. Lue vaikka Putkan opas läpi, niin osaat jo kopioida sen esimerkeistä paremman ratkaisun. Josset ymmärrä, mikä "syntax error" on, niin et pääse mihinkään edes kopioimalla toisten koodia, eli joudut kuitenkin vähän sparraamaan.

P.S. Olet jotenkin muokannut koodiasi kopiodessasi sen tänne, joten virheilmoituksen viesti ei edes ole oikein. Jos haluat apua, niin näytä juuri se koodi, mikä aiheuttaa ongelmia, älä jotain muuta.

Grez [31.08.2014 15:00:50]

#

Ja jos vielä käytät kooditageja oikealla kielimäärityksellä, niin jo pelkästä värityksestä näkyy karkeimpia virheitä.

//...clip
if($etunimi="") { header("Location: virhesivu.php; }
if ($sukunimi="") { header("Location: virhesivu.php; }
if($sahkoposti="") { header("Location: virhesivu.php; }
if($palaute="") { header("Location: virhesivu.php; }
if($tilaus="") { header("Location: virhesivu.php; }
if($viestikentta=""){ header("Location: virhesivu.php; }
//clip...

Koodatessakin kannattaa käyttää värittävää editoria omaa elämää helpottaakseen.

p99o [31.08.2014 16:30:18]

#

if($etunimi="") { header("Location: virhesivu.php; }

Sulut heder(); :iin
vertailuun kaksi "=" -merkkiä.

$etunimi==""

PHP kirjoitti:

eregi — Case insensitive regular expression match

-
Muulla tavoin en kommentoi koko koodia

Lebe80 [01.09.2014 08:55:40]

#

Eikös header locationin jälkeen pitäisi olla myös skriptin lopettamis-funktio ( die()/exit() ), jottei skriptin loppuosaa ajettaisi?

Ja kaikki "Possible hacking!" -tekstit hittoon, helposti voin kuvitella, että joku copy/pastee valmiista listasta tunnuksia, jolloin helposti voi tulla rivivaihto mukaan, jonka jälkeen häntä epäillää häkkäyksest. Mieluummin jokin kuvaavampi virheilmoitus (nimi sisältää epäkelpoja merkkejä, tarkista nimi-kenttä tms.).

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta