Formulier wil niet versturen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Jurgen B

Jurgen B

25/10/2008 23:32:00
Quote Anchor link
Dag mensen,

Ik zit hier met een klein probleem. Ben mezelf een beetje PHP aan het leren, en nu heb ik een scriptje gemaakt dat berichten uit de database haalt. Dat werkt na heel veel Googelen :P En nu wil ik via de pagina ook dingen versturen naar de database, maar daar heeft ie nog weinig zin in!!

Het vreemde is ook dat ik post gebruikt voor het versturen voor de gegevens, maar dat ie het toch in de URL zet!

Hier is de code ..

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php


include('config.php');
if($_SERVER['REQUEST_METHOD'] == 'POST' ){
$naam = $_POST['naam'];
$email = $_POST['email'];
$website = $_POST['website'];
$bericht = $_POST['bericht'];

$tijdstip = time();


$website="INSERT INTO berichten(naam, email, website, bericht, tijdstip)VALUES('".$naam."', '".$email."', '".$webiste."','".$bericht."','".$tijdstip."')";

if(!$res = mysql_query($website))
{

    trigger_error(mysql_error().'<br />In query: '.$website);
}

else
{
    $id = mysql_insert_id();
}

}

else {

$rijen_ophalen = "SELECT *
                    FROM berichten
                    ORDER BY tijdstip
                 "
;

$res = mysql_query($rijen_ophalen);

if(mysql_num_rows($res) >= 0){
    while ($rij = mysql_fetch_array($res))
        {

             echo 'ID nummer: '.$rij[id].'<br />';
             echo 'Naam:      '.$rij[naam].'<br />';
             echo 'E-mail:      '.$rij[email].'<br />';
             echo 'Website:      '.$rij[website].'<br />';
             echo 'Bericht:      '.$rij[bericht].'<br />';
             echo 'Tijdstip:  '.$rij[tijdstip].'<br />';
             echo '<br />';
             echo '<br />';
        }
}

else {
    echo 'Whoops, er staan (nog) geen berichten in het gastenboek';
}


$content .= <<<EOF

<form>
    <form action="{$_SERVER['REQUEST_URI']}" method="post">
        Naam:         <br /><input type="text" name="naam" value="{$naam}"></input><br />
        E-mailadres:<br /><input type="text" name="email" value="{$email}"></input><br />
        Website:    <br /><input type="text" name="website" value="{$website}"></input><br />
        Bericht:     <br /><textarea name="bericht" rows="8" cols="30">{$bericht}</textarea><br />
        <input type="submit" name="submit" value="Verstuur reactie">
</form>

EOF
;
echo $content;
}

?>
Gewijzigd op 01/01/1970 01:00:00 door Jurgen B
 
PHP hulp

PHP hulp

27/11/2020 01:44:34
 
PHP Newbie

PHP Newbie

25/10/2008 23:35:00
Quote Anchor link
Je controleert nergens of je query wel gelukt is.
 
Jan Koehoorn

Jan Koehoorn

25/10/2008 23:36:00
Quote Anchor link
Je hebt als form action PHP_SELF, dus kunnen er ook dingen in de url komen te staan en krijg je ze terug als GET variabelen. Verder is je script heel onveilig omdat je rechtstreeks gebruikersinput in je query zet.
 
Jurgen B

Jurgen B

25/10/2008 23:48:00
Quote Anchor link
@PHP Newbie: Dat doe ik doe toch door: if($_SERVER['REQUEST_METHOD'] == 'POST' ){ ???

@Jan Koehoorn: Wat zou ik dan moeten doen? De URL als action opgeven? Over die beveiliging bedoel je waarschijnlijk dingen als stripslashes e.d. ??

Die moet ik nog toevoegen.
 
PHP Newbie

PHP Newbie

25/10/2008 23:54:00
Quote Anchor link
Nee, daarmee controleer je of de pagina gesubmit is. Je controleert nergens of je query wel gelukt is.

Zie: http://www.phphulp.nl/php/tutorials/3/576/1496/
 
--

--

25/10/2008 23:54:00
Quote Anchor link
Jurgen B schreef op 25.10.2008 23:48:
@PHP Newbie: Dat doe ik doe toch door: if($_SERVER['REQUEST_METHOD'] == 'POST' ){ ???

@Jan Koehoorn: Wat zou ik dan moeten doen? De URL als action opgeven? Over die beveiliging bedoel je waarschijnlijk dingen als stripslashes e.d. ??

Die moet ik nog toevoegen.
Daarmee controleer je alleen of er gepost is. Jij moet even zoeken naar de tutorial foutafhandeling van Blanche in het zoekvak hiernaast.

Je kunt als actie ook gewoon "" opgeven, dan zullen de gegevens naar dezelfde pagina worden gestuurd.
 
PHP Newbie

PHP Newbie

26/10/2008 00:01:00
Quote Anchor link
Evert schreef op 25.10.2008 23:54:

Je kunt als actie ook gewoon "" opgeven, dan zullen de gegevens naar dezelfde pagina worden gestuurd.


Dat is niet valid. Gebruik dan action="#"
 
--

--

26/10/2008 00:02:00
Quote Anchor link
PHP Newbie schreef op 26.10.2008 00:01:
Evert schreef op 25.10.2008 23:54:

Je kunt als actie ook gewoon "" opgeven, dan zullen de gegevens naar dezelfde pagina worden gestuurd.


Dat is niet valid. Gebruik dan action="#"
Dat heb ik je vandaag eerder horen zeggen. :-)
Nu zal ik het ook onthouden.
 
Jurgen B

Jurgen B

26/10/2008 00:03:00
Quote Anchor link
Heb beide punten aangepast. Er veranderd alleen nog niets. De code heb ik aangepast in mijn openingspost.
 
Jan Koehoorn

Jan Koehoorn

26/10/2008 00:03:00
Quote Anchor link
Quote:
Dat is niet valid. Gebruik dan action="#"

En dat is weer niet veilig. Gebruik:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<form action="<?php echo $_SERVER['REQUEST_URI']; ?>">
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 
Jurgen B

Jurgen B

26/10/2008 00:04:00
Quote Anchor link
Oke gedaan! ;)
 
Jan Koehoorn

Jan Koehoorn

26/10/2008 00:12:00
Quote Anchor link
Mooi, maar is het probleem nu opgelost?
 
Jurgen B

Jurgen B

26/10/2008 00:16:00
Quote Anchor link
Nee ;) Er veranderd nog steeds helemaal niets. Zie mijn oude bericht:

Heb beide punten aangepast. Er veranderd alleen nog niets. De code heb ik aangepast in mijn openingspost.

Overigens doet ie nog steeds dit wat ik echt totaal niet snap!

http://localhost/gastenboek/index2.php?naam=dfhgfhgffhh&email=&website=&bericht=&submit=Verstuur+reactie
Gewijzigd op 01/01/1970 01:00:00 door Jurgen B
 
--

--

26/10/2008 00:18:00
Quote Anchor link
PHP Newbie schreef op 26.10.2008 00:01:
Evert schreef op 25.10.2008 23:54:

Je kunt als actie ook gewoon "" opgeven, dan zullen de gegevens naar dezelfde pagina worden gestuurd.


Dat is niet valid. Gebruik dan action="#"
Het is dus wel valid: zie hier. Lekker puh! :-)

Met dank aan Karl voor het testen. :-)
 
PHP Newbie

PHP Newbie

26/10/2008 00:20:00
Quote Anchor link
Jan Koehoorn schreef op 26.10.2008 00:03:
Quote:
Dat is niet valid. Gebruik dan action="#"

En dat is weer niet veilig. Gebruik:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<form action="<?php echo $_SERVER['REQUEST_URI']; ?>">


Juist dat is niet veilig. Had daar vanmiddag nog een voorbeeldje over gezien. Ik kan nu een link maken die er ongeveer zo uitziet:

www.site.nl/formulier.php?p="; action="www.eenanderewebsite.nl"

Wanneer ik die link naar mensen stuur denken ze dat ze bijvoorbeeld hun gegevens invoeren op de site van ideal maar stiekum sluis ik ze door naar mijn site.

Graag hoor ik van je waarom de "#" niet veilig is.

Evert schreef op 26.10.2008 00:18:
PHP Newbie schreef op 26.10.2008 00:01:
Evert schreef op 25.10.2008 23:54:

Je kunt als actie ook gewoon "" opgeven, dan zullen de gegevens naar dezelfde pagina worden gestuurd.


Dat is niet valid. Gebruik dan action="#"
Het is dus wel valid: zie hier. Lekker puh! :-)

Met dank aan Karl voor het testen. :-)


Dan is dat afhankelijk van het doctype, want ik heb er wel eens errors op gekregen.
Gewijzigd op 01/01/1970 01:00:00 door PHP Newbie
 
Jan Koehoorn

Jan Koehoorn

26/10/2008 00:21:00
 
Jurgen B

Jurgen B

26/10/2008 00:25:00
Quote Anchor link
Ja dat doe ik normaal ook, maar de URL die ik poste is de URL die ik krijg na het versturen van het formulier
 
Jan Koehoorn

Jan Koehoorn

26/10/2008 00:29:00
Quote Anchor link
Maak eens dit van je insert query:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
    $sql
= "
        INSERT INTO berichten
        (
            naam,
            email,
            website,
            bericht,
            tijdstip
        )
        VALUES
        (
            '"
. mysql_real_escape_string ($_POST['naam']) . "',
            '"
. mysql_real_escape_string ($_POST['email']) . "',
            '"
. mysql_real_escape_string ($_POST['website']) . "',
            '"
. mysql_real_escape_string ($_POST['bericht']) . "',
            '"
. mysql_real_escape_string ($_POST['tijdstip']) . "'
        )
        "
;
?>
 
PHP Newbie

PHP Newbie

26/10/2008 00:30:00
Quote Anchor link
Dan voert hij op de een of andere manier toch een method="get" uit i.p.v. een post. Kijk eens in je broncode hoe het formulier daar staat.
 
Jurgen B

Jurgen B

26/10/2008 00:39:00
Quote Anchor link
Ja ik snap er echt niets van. Ik heb het aangepast hoor Jan. Zo is het veiliger he?

Als ik in de bron kijk krijg ik dit te zien:
<form>
<form action="/gastenboek/index2.php" method="post">
Naam: <br /><input type="text" name="naam" value=""></input><br />

E-mailadres:<br /><input type="text" name="email" value=""></input><br />
Website: <br /><input type="text" name="website" value=""></input><br />
Bericht: <br /><textarea name="bericht" rows="8" cols="30"></textarea><br />
<input type="submit" name="submit" value="Verstuur reactie">
</form>
 
Jan Koehoorn

Jan Koehoorn

26/10/2008 00:41:00
Quote Anchor link
Je gebruikt een sluittag voor input, terwijl die helemaal niet bestaat.
Edit: bovendien open je twee keer de form tag!
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.