Toon posts:

[php] gastenboek schrijft (online) niet weg in tekstfile

Pagina: 1
Acties:
  • 315 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik zit met een volgend probleem. Ik heb een gastenboek gemaakt en op de computer met apache werkt het prima. Schrijft gewoon weg in tekstfile en leest e.d. Alleen zodra hij online staat werkt het niet meer, er gebeurt niks wanneer ik submit. Ik heb de search al gebruikt maar ik kom er niet uit. dit is de bron:

code:
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
<?php
$naam=$_POST[naam];
$email=$_POST[email];
$commentaar=$_POST[commentaar];
echo "<H2>Een eenvoudig gastenboek</H2>\n";
echo "<p>Velden met een <font color=\"red\"><b>*</b></font> zijn verplicht in te vullen</p>\n";
echo "<table>";
echo "<form action=\"$_SERVER[PHP_SELF]\" method=\"post\">\n";
echo "<tr><td>Uw naam : </td><td><input type=\"text\" name=\"naam\"><font color=\"red\"><b> *</b></font> </td></tr>\n";
echo "<tr><td>Uw E-mail : </td><td><input type=\"text\" name=\"email\"> ( optioneel )</td></tr>\n";
echo "<tr><td>Uw commentaar : </td><td>&nbsp;</td></tr>\n";
echo "<tr><td>&nbsp;</td><td><textarea cols=\"55\" rows=\"5\" wrap=\"soft\" name=\"commentaar\"></textarea><font color=\"red\"><b> *</b></font></td></tr>\n";
echo "<tr><td>&nbsp;</td><td><input type=\"submit\" value=\"Commentaar verzenden\"></td></tr>\n";
echo "</table>";

echo "<hr>\n";
echo "<p><h2>Reeds geleverde commentaar</h2></p>\n";

$tekstfile="commentaar.txt";
if ($email == "") { $email="iemand@niemand.com";}
if (isset($commentaar) && naam != "") {
    $pointer=fopen($tekstfile,"r+");
    $oudcommentaar=fread($pointer,filesize($tekstfile));
    $email="<a href=\"mailto:$email\">$email</a>";
    $date=date("j.n.Y");
    $commentaar=htmlspecialchars($commentaar);
    $commentaar=stripslashes(nl2br($commentaar));
    $geschreven="<p><strong>$naam</strong> ($email) heeft geschreven op <i>$date</i> : <br><br>$commentaar</p><hr>\n";
    rewind($pointer);
    fputs($pointer,"$geschreven\n$oudcommentaar\n");
}
readfile($tekstfile);

?>

  • moto-moi
  • Registratie: Juli 2001
  • Laatst online: 09-06-2011

moto-moi

Ja, ik haat jou ook :w

Wat staat er in je logfiles ? :)
Ik gok zomaar dat je schrijfrechten hebt op je directory c.q. je file :)

God, root, what is difference? | Talga Vassternich | IBM zuigt


Verwijderd

Topicstarter
Dus ik zou een unix host hebben? Ik probeer ff een chmod dan...

edit: het werkt, dank je voor het op het idee brengen

[ Voor 31% gewijzigd door Verwijderd op 23-03-2005 08:02 ]


  • tombo_inc
  • Registratie: December 2004
  • Laatst online: 10-03 13:21

tombo_inc

uhuh

chmodden idd.

wat je eigenlijk ook moet doen is de keys van een array quoten. heeft niks met je probleem te maken maar helpt je misschien in de toekomst nog eens. dus $_POST[naam] word $_POST['naam']. als je dat niet doet denkt php namelijk dat je een constante bedoelt en die is er niet. ;)

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition


Verwijderd

Topicstarter
http://www.secusaver.com/joost/gastenboek/

Dit is nu mijn gastenboek, het is natuurlijk allemaal wel leuk alleen nog 1 probleem; je kan tot in eeuwigheid doorgaan met het invoeren van berichten. Weten jullie hoe je hier een maximum aan kan stellen? Mysql is geen oplossing omdat deze host dat niet ondersteund.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

In je tekstfile (of in een andere tekstfile) ook IP en datum opslaan, en niet toestaan om op dezelfde dag vanaf hetzelfde IP meer dan <vul getal in> posts te doen?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • tombo_inc
  • Registratie: December 2004
  • Laatst online: 10-03 13:21

tombo_inc

uhuh

bedoel je het aantal berichten per gebruiker of in het algemeen. voor de gebruiker volg dan NME's manier. in het algemeen dan moet je gewoon maar een x-aantal berichten uit je tekst bestand lezen.

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition


Verwijderd

Topicstarter
algemeen. welke code moet ik gebruiken? kan iemand een opzetje geven?

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Waarom zou je een gastenboek een limiet van gasten op willen leggen? Ik denk dat je wel per gebruiker wil en dus per IP.

Je weet hoe je moet schrijven naar en lezen uit een bestand, dus controleren of het IP al in het bestand staat moet je wel zelf kunnen uitvogelen lijkt me. :)

{signature}


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 21:25

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op donderdag 24 maart 2005 @ 15:16:
algemeen. welke code moet ik gebruiken? kan iemand een opzetje geven?
Als het topic puur gebruikt gaat worden om code te vragen, gaat deze dicht :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
niet puur om code te vragen hoor, ik ben zelf al bezig met een while lus die de 1e 20 bestanden uitleest
Waarom zou je een gastenboek een limiet van gasten op willen leggen? Ik denk dat je wel per gebruiker wil en dus per IP.

Je weet hoe je moet schrijven naar en lezen uit een bestand, dus controleren of het IP al in het bestand staat moet je wel zelf kunnen uitvogelen lijkt me.
het maakt me in principe niet uit of mensen vaak posten of niet, als de rij maar niet te lang wordt.

[ Voor 67% gewijzigd door Verwijderd op 24-03-2005 15:26 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Verwijderd schreef op donderdag 24 maart 2005 @ 15:24:
het maakt me in principe niet uit of mensen vaak posten of niet, als de rij maar niet te lang wordt.
Als je bang bent dat de rij te lang wordt, dan kun je denken aan paging. Of je doet wat ik op mijn gastenboek gedaan heb: een oplossing met Javascript om de zooi kort te houden.

Hoe dan ook lijkt het me beter om een oneindig aantal berichten per dag toe te staan, maar maar een beperkt aantal per ip per dag, om zo spam tegen te gaan. Voor het checken van een IP kun je de $_SERVER array gebruiken, en dan vooral de indexen REMOTE_ADDR, HTTP_VIA en HTTP_X_FORWARDED_FOR, en nog een paar andere.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
PHP:
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
<?php 

$tekstfile="commentaar.txt"; 
$aantalberichten = 0;  

if($submit) { 

if(submit) { echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0; URL=\"addmsg.php>"; } 

if(strlen($naam) < 3) { echo "<script>window.alert('Gelieve een geldige naam in te vullen')</script>"; } 

else { 

if(strlen($bericht) < 2) { echo "<script>window.alert('Gelieve een geldig bericht in te vullen')</script>"; } 

else { 

if(isset($_POST["bericht"]) && $bericht !="" && $_POST["naam"]) { 

while(!feof( $tekstfile) && $aantalberichten < 5) { 

    $aantalberichten++;  
    $pointer=fopen($tekstfile, "r+"); 
    $oudcommentaar=fread($pointer,filesize($tekstfile)); 
    $date=date("j-n-Y");


enz.......

Het wil niet werken, hij leest nog steeds alles uit :(

[ Voor 17% gewijzigd door NMe op 06-04-2005 01:59 . Reden: code tags ]


  • killercow
  • Registratie: Maart 2000
  • Laatst online: 07-05 21:02

killercow

eth0

Mischien kun je de huidige inhoud van je txt file op /n delen oid, en dan de eerste 20 array elementen + de nieuwe add vooraan terug schrijven naar je file? dan heb je altijd max 20 posts, icm een ip check moet dit werken lijkt me.

openkat.nl al gezien?


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Sorry, maar zou je je eerst eens willen verdiepen in wat je aan het doen bent? Je doet de meest vreemde dingen in je code:
  1. Inspringen! Ik zie door de bomen het bos niet meer. Als je geen tabs gebruikt om elk code blok netjes in te springen, dan doet niemande de moeite om het te lezen.
  2. Regel 8: nog een keer "if ($submit)", waarbij je ook nog eens het $ weg hebt gelaten, waardoor de parser het zal zien als de string 'submit'. Die hele if kan weg...
  3. Regel 18: wat ben je van plan met $_POST['naam']? Het enige wat je nu doet, is checken of die niet toevallig gelijk is aan 0 of false, wat me geen logische waarde lijkt voor een naam.
  4. Regel 20: je gebruikt feof() nog voordat je de file überhaupt geopend hebt...
  5. Het deel dat de tekst daadwerkelijk uitleest en in een array zet, dat zie ik nergens terug...
  6. Waar komt $submit überhaupt vandaan? register_globals??
  7. P&W FAQ - Leer **** debuggen!!
Kortom: we kunnen nu wel proberen om je op weg te helpen, maar er ontbreekt bij je gewoon een beetje basiskennis, waardoor we elkaar niet gaan begrijpen. :) Probeer eerst nog eens wat simpelere dingen te maken, of lees een goed boek over programmeren of over PHP in het algemeen. :)

Ik doe je topic nu op slot. Wanneer je tegen een nieuw probleem aanloopt, dan ben je natuurlijk vrij om hier een topic te starten. Hou hierbij wel even P&W FAQ - De "quickstart" in het oog, want alleen zeggen dat iets niet werkt, en dan de code dumpen, dat is eigenlijk "not done". :)

Succes! :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.