Vraag & Antwoord

Webprogrammeren & scripting

Globale variabelen in php

10 antwoorden
  • 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
  • ik zou om te beginnen eens kijken naar: <form method = "post". daar hoort dus een $_post['naam'] bij. try it :) t.
  • Je gebruikt een POST (<form method="post">). Dat betekent dat je ze ook uit de $_POST array moet halen, i.p.v. de $_GET. sim-pel :D
  • 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<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
  • los van je code: $_post("naam") is niet hetzelfde als $_post['naam'] t.
  • 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.
  • $_POST['naam'] is ook al niet hetzelfde als $_post['naam']. Als je aan het programmeren bent kun je jezelf beter niet al te veel van dat soort slordigheden toestaan.
  • Dit was het, hoofdletters dus voor POST. Door de iets verschillende antwoorden die ik kreeg van Teatcher ontstond bij mij de indruk dat dit niet hoofdlettergevoelig was. Hoe dan ook, het werkt weer. Teacher, Annie en maIRnaairruJ, reuze bedankt. Jan de Boer
  • Je moet ook niet al te veel naar teacher luisteren ;) :D
  • [quote:8aee280ca4="Annie"]Je moet ook niet al te veel naar teacher luisteren ;) :D[/quote:8aee280ca4] geeft niks.. noem het beroepsdeformatie, maar ik ben gewend genegeerd te worden :P

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.