Gastenboek gemaakt, maar na POST geen bericht?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior, Medior and Junior SAP HANA Developer

Vacature details Vakgebied: Software/IT Opleiding: Medior Werklocatie: Veldhoven Vacature ID: 12696 Introductie Our client is the world's leading provider of lithography systems for the semiconductor industry, manufacturing complex machines that are critical to the production of integrated circuits or chips. Our purpose is “unlocking the potential of people and society by pushing technology to new limits”. We do this guided by the principles “Challenge”, “Collaborate” and “Care”. Wat verwachten we van jou? SAP Certified Application Associate - SAP HANA Cloud Modeling (training and/or certification) Bachelor degree or higher Excellent understanding of SAP HANA (2.0 / Cloud), Data Modelling and writing

Bekijk vacature »

Romy Blankendaal

Romy Blankendaal

31/08/2012 19:52:34
Quote Anchor link
Hallo allemaal,
Ik ben nog maar een beginner op php gebied, maar ben wel zover gekomen dat ik nu een gastenboek heb gemaakt voor op de website van mn moeder (die ik ook zelf heb gemaakt). Mijn gastenboek werkt prima alleen, maar nu ik heb eenmaal in de website zelf heb gezet doet hij het niet meer. Ik zit er al een paar dagen aan, en heb verschillende dingen geprobeerd, maar ik kom er niet uit.
Op het moment dat ik op de knop verstuur druk, wordt wel weer de nieuwe pagina geladen (zoals ik heb geprogrammeerd) maar ik zie nergens het bericht. Het is de bedoeling dat het bericht onder het invul scherm komt te staan.
Hieronder zal ik de stukken codes neerzetten, ik hoop dat iemand mij kan helpen?

groetjes Romy


Dit is mn html document met het php formulier genaamd beblog.html

<div id="content">
<div id="blog">
<div class="post">
<h1 class="title">gastenboek </h1>
<div class="entry">

<form action="plaats.php" method="post" accept-charset="iso-8859-1">
<p>
De gegevens die u via het volgende formulier invult, worden op het gastenboek geplaatst en zullen voor iedereen zichtbaar zijn.
</p>
<p>
Naam: <br>
<input name="naam" type="text" size="40" tabindex="1000">
</p>
<p>
E-mail: (optioneel)<br>
<input name="email" type="text" size="40" tabindex="1001">
</p>
<p>
Woonplaats: (optioneel)<br>
<input name="woonplaats" type="text" size="40" tabindex="1003">
</p>
<p>
Uw bericht: <br>
<textarea name="bericht" rows="8" cols="40" tabindex="1004"></textarea>
</p>
<p>
<input type="submit" name="submit" value="Verstuur" title="Verstuur dit formulier" tabindex="1005">
</p>
</form>


</div>

<div class="hr">
<hr />
</div>
</div>
<!-- end #post -->

</div>
<!-- end #blog -->


<div style="clear: both; height: 1px;"></div>
</div>
<!-- end #content -->


Om de berichten op te slaan maak ik gebruik van een leeg php bestand genaamd gastenboek.php chmod 777

Het php document achter de verstuur knop heet plaats.php:
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
<?php
$naam
= $_POST['naam'];                        
$email = $_POST['email'];                        
$woonplaats = $_POST['woonplaats'];        
$bericht = $_POST['bericht'];  
$datum = date("d.m.y H:i");
$bericht = htmlentities($bericht);
$bericht = nl2br($bericht);
$bericht = stripslashes($bericht);

// defineer het bestand met berichten
$file = "gastenboek.php";

// open het bestand
$fopenr = fopen ($file, "r");

// sla de inhoud op om de eerder toegevoegde berichten
// te onthouden en te herschrijven onder het nieuwe bericht

$msgs = fread ($fopenr, filesize ($file));

// open de file nogmaals maar dan nu om er in te schrijven
$fopenw = fopen($file, "w+");

// schrijf nieuwe bericht + alle oude in $file
fwrite($fopenw, "
\n\n<!-- bericht -->\n
<b>$naam</b> &lt;$email&gt;<br>\n
<blockquote><p>$bericht</p></blockquote>\n
<p>$datum</p>$msgs
"
);

// sluit het bestand
fclose($fopenw);

// sluis bezoeker door naar beblog.html
echo "<SCRIPT LANGUAGE=\"javascript\" TYPE=\"text/javascript\">window.location='beblog.html'</SCRIPT>\n";

mail ("[email protected]", "Nieuw bericht in gastenboek", "
Hallo,\n\n

Er is zojuist een bericht achter gelaten door $naam ($email).\n\n

Dit was een automatisch bericht.
"
, "From: $naam <$email>");

?>


p.s. de automatische mail doet het ook niet, al vind ik dat niet heel erg, maar als iemand die fout daar misschien ook ziet?

Alvast super bedankt!
 
PHP hulp

PHP hulp

03/05/2024 08:56:16
 
John D

John D

31/08/2012 20:25:39
Quote Anchor link
1. Voor het nogmaals openen de file closen gastenboek.php
2. regel 36 kan je beter oplossen met php header() location
3. Je springt misschien te vroeg naar location='beblog.html de mail wordt nooit verstuurd (ik ken deze oplossing niet)
4. Zorg voor de juiste quotes in de mail() functie
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
mail ('[email protected]', 'Nieuw bericht in gastenboek','
Hallo,\n\n

Er is zojuist een bericht achter gelaten door $naam ($email).\n\n

Dit was een automatisch bericht.
From: '
.$naam.' '.<$email>);
header('Location: beblog.html');
?>

Zet foutmeldingen aan om te kunnen debuggen
Gewijzigd op 31/08/2012 20:34:40 door John D
 
Romy Blankendaal

Romy Blankendaal

31/08/2012 20:38:11
Quote Anchor link
Hallo John D
Ten eerste bedankt voor deze snelle reactie, helemaal super.
Ik ga er gelijk mee aan de slag, hoe het verder loopt zal ik weer mee delen.

Groetjes Romy

Toevoeging op 31/08/2012 20:46:48:

Hallo John D,
Ik heb je vier opmerkingen erin verwerkt (hoop op de goede manier), maar nog steeds zonder enig verschil in het resultaat..
Dit is het nu:
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
<?php
$naam
= $_POST['naam'];                        
$email = $_POST['email'];                        
$woonplaats = $_POST['woonplaats'];        
$bericht = $_POST['bericht'];  
$datum = date("d.m.y H:i");
$bericht = htmlentities($bericht);
$bericht = nl2br($bericht);
$bericht = stripslashes($bericht);

// defineer het bestand met berichten
$file = "gastenboek.php";

// open het bestand
$fopenr = fopen ($file, "r");

// sla de inhoud op om de eerder toegevoegde berichten
// te onthouden en te herschrijven onder het nieuwe bericht

$msgs = fread ($fopenr, filesize ($file));

// sluit het bestand
fclose($fopenw);

// open de file nogmaals maar dan nu om er in te schrijven
$fopenw = fopen($file, "w+");

// schrijf nieuwe bericht + alle oude in $file
fwrite($fopenw, "
\n\n<!-- bericht -->\n
<b>$naam</b> &lt;$email&gt;<br>\n
<blockquote><p>$bericht</p></blockquote>\n
<p>$datum</p>$msgs
"
);

// sluit het bestand
fclose($fopenw);

mail ('[email protected]', 'Nieuw bericht in gastenboek','
Hallo,\n\n

Er is zojuist een bericht achter gelaten door $naam ($email).\n\n

Dit was een automatisch bericht.
From: '
.$naam.' '.$email);
header('Location: beblog.html');

// sluis bezoeker door naar beblog.html
echo "<SCRIPT LANGUAGE=\"javascript\" TYPE=\"text/javascript\">window.location='beblog.html'</SCRIPT>\n";


?>
 
John D

John D

31/08/2012 21:04:31
Quote Anchor link
Zet foutmeldingen "aan" door dit na regel 1 te zetten:
ini_set('display_errors',1);
error_reporting(E_ALL);
Edit:
regel 22 moet zijn fclose($fopenr);
regel 47 en 48 kunnen weg
Gewijzigd op 31/08/2012 21:10:11 door John D
 
Romy Blankendaal

Romy Blankendaal

31/08/2012 21:07:23
Quote Anchor link
Hallo John D,

Ik krijg de foutmeldingen niet aan, ik werk in Dreamweaver en ik controleer mn PHP
met Xampp.

Toevoeging op 31/08/2012 21:08:38:

Kan het zijn dat de berichten en de foutmeldingen wel worden weergeven maar dat de pagina daar overheen laad?
 
John D

John D

31/08/2012 21:12:00
Quote Anchor link
Is mogelijk, ik ken dreamweaver niet. Laat eventueel regel 45 even weg of uitcommentarieren met // verder kunnen regel 47 en 48 weg
Gewijzigd op 31/08/2012 21:12:38 door John D
 
Romy Blankendaal

Romy Blankendaal

31/08/2012 21:39:11
Quote Anchor link
Regel 47 en 47 heb ik weg gehaald, haalde inderdaad niets uit, maar regel 45...zodra ik die weg haal krijg ik gelijk een error...Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in F:\xampp\htdocs\GBook\plaats.php on line 47

Zal ik maar stoppen of overnieuw gaan beginnen? :p

Toevoeging op 31/08/2012 21:45:39:

Ehh...ik heb net via wat anders per ongeluk gastenboek.php geopend (het bestandje waarin mn berichten opgeslagen meoten worden) maar daar staan wel al mn berichten in, dus het wordt wel goed opgeslagen..
 
John D

John D

31/08/2012 22:18:17
Quote Anchor link
je krijgt nu een foutmelding, prima. Die moet je op gaan lossen. Het probleem ligt voor de hand, de mail() functie kan nooit werken op jouw Xampp omdat Xammp geen mailserver is/heeft. Je moet dit dus uitproberen op de echte site of je moet overstappen op de freeware phpmailer scripts waarmee je bijvoorbeeld google mail als mailserver kan configureren.
 
Romy Blankendaal

Romy Blankendaal

31/08/2012 22:38:23
Quote Anchor link
Hallo John D, ik heb het nu helemaal anders aangepakt, ik laat de mail er nu ook uit...maar ik krijg de volgende error, kunt u me daar misschien mee helpen?

Notice: Use of undefined constant Naam - assumed 'Naam' in F:\xampp\htdocs\Gbook3\verwerk.php on line 2

Notice: Use of undefined constant Email - assumed 'Email' in F:\xampp\htdocs\Gbook3\verwerk.php on line 3

Notice: Use of undefined constant url - assumed 'url' in F:\xampp\htdocs\Gbook3\verwerk.php on line 4

Notice: Use of undefined constant bericht - assumed 'bericht' in F:\xampp\htdocs\Gbook3\verwerk.php on line 5


die regels zien er zo uit:

$Naam = $_POST[Naam];
$Email = $_POST;
$url = $_POST[url];
$Bericht = $_POST[bericht];

[size=xsmall][i]Toevoeging op 31/08/2012 22:38:38:[/i][/size]

Oja, en ik krijg nu wel een bericht! :D
 
Php knipper

php knipper

01/09/2012 00:22:33
Quote Anchor link
$Naam = $_POST[Naam];
$Email = $_POST;
$url = $_POST;
$Bericht = $_POST[bericht];

je vergeet de ' over naam url en bericht, verder is die 2 de niet compleet
 
Obelix Idefix

Obelix Idefix

01/09/2012 10:19:18
Quote Anchor link
Romy Blankendaal op 31/08/2012 19:52:34:
Om de berichten op te slaan maak ik gebruik van een leeg php bestand genaamd gastenboek.php chmod 777

Waarom een bestand de extensie php geven, als er geen enkele php in voorkomt? Werken met een txt file lijkt mij logischer.
chmod 777 wordt doorgaans afgeraden; iedereen kan/mag alles met het bestand doen (lezen, schrijven, uitvoeren). Dat is doorgaans niet nodig/wat je wilt. 644 is volgens mij wat (meer dan) genoeg zou moeten zijn.

Romy Blankendaal op 31/08/2012 19:52:34:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$naam
= $_POST['naam'];                        
$email = $_POST['email'];                        
$woonplaats = $_POST['woonplaats'];        
$bericht = $_POST['bericht'];  
$datum = date("d.m.y H:i");
?>

Waar controleer je of het formulier is verzonden?
Waar controleer je of de velden zijn ingevuld?
Waarom kopieer je de input? Je kunt toch net zo goed de $_POST waarden gebruiken in de rest van je script? Is gelijk duidelijk waar ze vandaan komen (extern).

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo "<SCRIPT LANGUAGE=\"javascript\" TYPE=\"text/javascript\">window.location='beblog.html'</SCRIPT>\n";

In PHP gebruik je ' (mysql wel ") en in HTML gebruik je ".
Zie http://www.phphulp.nl/php/tutorial/php-algemeen/correct-quoten/772/
Bijkomende voordelen: overzichtelijker, minder kans op fouten met al die \
 
Romy Blankendaal

Romy Blankendaal

01/09/2012 10:25:24
Quote Anchor link
Php Knipper, dankjewel hij werkt al!
Obelix en Idefix, bedankt voor je reactie, ik heb er al een txt van gemaakt inderdaad :p De php code doet het ondertussen ook want ik ben druk bezig geweest maar evengoed bedankt voor je reactie en vooral de uitleg, erg duidelijk!
 



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.