Ga naar inhoud

Globale variabelen in php


anoniem

Aanbevolen berichten

Tot voor kort had ik een perfect werkend zéér eenvoudig gastenboek met behulp van php4.1.0. Ik had daar in de phpfile de variabelen [b:9af25d0f58]$naam[/b:9af25d0f58], [b:9af25d0f58]$woonplaats [/b:9af25d0f58]en [b:9af25d0f58]$reactie [/b:9af25d0f58] staan, die zonder probleem van het fomulier op een html-file met een <form> werden geïmporteerd: [b:9af25d0f58]<form method = "post" action = "voegreactietoe.php">.[/b:9af25d0f58] Sinds kort heeft de provider php4.2.0, en kan dit zoals bekend met globale variabelen niet meer. Deze variabelen moeten nu in de php-file daadwerkelijk worden geïmporteerd voordat ze aldaar kunnen worden gebruikt, en wel zoals eveneens bekend met: [b:9af25d0f58]$naam=$_GET["naam"); $woonplaats=$_GET["woonplaats"); $reactie=$_GET["reactie");[/b:9af25d0f58] Dit was me al een hele poos bekend, maar tot nu toe ben ik te lui geweest om dit even te veranderen. Ik dacht nu "fluitje van een cent, ik verander dit alsnog even". Helaas het doet helemaal niets meer, zelfs geen foutmelding. De procedure blijft na "Verzend" op een blanco scherm hangen (de php-file, waarvan de inhoud uiteraard voor de bezoeker onzichtbaar is). Uiteraard zie ik iets over het hoofd, maar wat? Moet voorafgaand aan $naam=$_GET["naam"); etc. nog iets plaats vinden. Het html-formulier stuurt toch de inhoud van de form al naar het php-bestand? Werken b.v. fread en fwrite nog zondermeer? Kortom, ik mis iets, iemand idee wat? Jan de Boer
Link naar reactie
Bedankt voor de gelijkluidende antwoorden. Maar helaas is het resultaat nog hetzelfde. Hoewel het niet zo gebruikelijk is om complete scripts neer te zetten, waag ik het er toch op, het is niet zo lang. De html met <form> luidt[code:1:9205e8bac2]<html> <head><title>Gastenboek</title></head> <BODY BGCOLOR="#FFEEAA" BACKGROUND="../nnnnn.gif"> <center> <h1>Gastenboek Website Nnnnn</h1></center> <br> <form method="post" action="voegreactietoe.php"> <blockquote> <b>Naam: &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp<input type=text name="naam"><br> <b>Woonplaats: <input type=text name="woonplaats"><br> Commentaar:<br> <textarea name="reactie" rows="10" cols="60"></textarea><br> <input type=submit value=verstuur> <input type=reset value=annuleren> </form> <A HREF="../index.html"><IMG ALIGN=RIGHT SRC="../homeyellowbutton.gif" border=0></A> <A HREF="frame-reacties.html"><IMG ALIGN=LEFT SRC="reactiesyellowbutton.gif" border=0 alt="geplaatste reacties"></A> </body> </html> [/code:1:9205e8bac2]En het php-script: (Het enige wat er is veranderd, is dat er nu wel een foutreactie verschijnt: "Fatal error: Call to undefined function: () in /---------/gasten/voegreactietoe.php on line 3"). [code:1:9205e8bac2]<?PHP $uitvoerbestand = "reacties.html"; $naam=$_post("naam"); $woonplaats=$_post("woonplaats"); $reactie=$_post("reactie"); $basis = "basis.txt"; $reacties="reacties.txt"; if(strlen($naam)<1) {$naam="Anoniem";} if(strlen($reactie)<1) {header("location: foutmelding.html"); exit;} $datum =date("j-n-Y"); $tijd =date("H:i"); $reactie=stripslashes($reactie); $reactie= strip_tags($reactie, '<i>'); $reactie=nl2br($reactie); # #lees oude berichten $bestandsindex = fopen($reacties,"r"); $oud = fread($bestandsindex, filesize($reacties)); fclose($bestandsindex); # #Schrijf nieuwe + oude data weg in tekstbestand $bestandsindex = fopen($reacties,"w+"); fwrite($bestandsindex,"Reactie van $naam, $woonplaats $datum, $tijd uur:<br><br>"); fwrite($bestandsindex,"$reactie<br><br><hr><br>"); fwrite($bestandsindex,$oud); fclose($bestandsindex); # header("location: frame-reacties.html"); ?> [/code:1:9205e8bac2]De bovenste 3 regels php-code zijn dus toegevoegd, de rest is ongewijzigd, en daarmee functioneerde het tot die versiewijziging. Moet toch simpel zijn dacht ik. NB: Er zijn twee variabelen die erg op elkaar lijken, verwar deze bij het lezen niet: [b:9205e8bac2]$reactie[/b:9205e8bac2] en [b:9205e8bac2]$reacties[/b:9205e8bac2]. Jan de Boer
Link naar reactie
Ronde haken vervangen door rechte (hoe simpel kun je je vergissen). Foutcode nu weer weg, maar de variabelen worden nog steeds niet ingelezen, en worden door de de php-routine dus gezien als leeg en in het verdere verloop ook alszodanig gemeld met de ingeprogrammeerde melding dat reactieveld niet is ingevuld. Delete ik die "if(strlen($reactie)<1)" tijdelijk, dan wordt een lege reactie geplaatst met als afzender, zoals eveneens geprogrammeerd, Anoniem. Geprobeerd met zowel aanhalingstekens als met apostrofjes. Zelfde resultaat.
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...