27. maj 2004 - 17:50
Der er
12 kommentarer og 1 løsning
Problemer med omprogramering af fil
Hejsa Jeg skal have skrevet denne fil om så den kan bruges på en server der har register:_globals off. Det driller bare, og der kommer hele tiden en eller anden lille fejl. Er der en af jer der kan hjælpe? Filen indeholder følgende: -------------------- <body bgcolor="#E9E9E2"><?php function head() { include('config.php'); echo "<table width=\"120\" border=\"0\" cellpadding=\"1\" cellspacing=\"1\"> <tr><td bgcolor=\"$tableborder\"> <table width=\"120\" border=\"0\" cellpadding=\"0\" cellspacing=\"\" align=\"center\"> <tr><td bgcolor=\"$bgcolor\">"; } function foot () { echo "</td></tr></table></td></tr></table>"; } function record($REMOTE_ADDR) { include('config.php'); $fp=fopen("$ip_file", "a+"); fputs ($fp,$REMOTE_ADDR."][".time()."\n"); fclose($fp); } function check($REMOTE_ADDR) { include('config.php'); global $valid; $ip=$REMOTE_ADDR; $data=file("$ip_file"); $now=time(); foreach ($data as $record) { $subdata=explode("][",$record); if ($now < ($subdata[1]+3600*$timeout)) { if ($ip == $subdata[0]) { $valid=0; break; }}}} //##################### Save data ############################## function save($answer){ global $answer; include('config.php'); $data=file($datafile); $subdata=explode("][",$data[$answer]); $subdata[2]+=1; $data[$answer]=implode("][", $subdata); $data[$answer]=$data[$answer]."\n"; $fp=fopen($datafile,"w+"); $a=0; do{ fputs($fp,$data[$a]); $a++; }while($a<count($data)); fclose($fp); } //########################## Show Form ############################ function form($PHP_SELF){ include('config.php'); head(); echo "<font size=\"$fontsize\" face=\"$font\" color=\"$textcolor\"><form method=\"post\" action=\"$PHP_SELF\"><p align=\"center\">"; $data=file($datafile); $question=$data[0]; $nb_options=count($data)-1; echo "$question</p>"; for($nb=1;$nb <= $nb_options; $nb++){ $option=explode("][","$data[$nb]"); echo "<input type=\"radio\" name=\"answer\" value=\"$nb\"> "; echo "$option[0]<br>"; } echo "<input type=\"hidden\" name=\"save\" value=\"yes\">"; echo "<p align=\"center\"><input type=\"submit\" name=\"Submit\" value=\"Submit\"></form></font>"; echo "<font size=\"$fontsize\" face=\"$font\" color=\"$textcolor\"><a href=\""; echo $PHP_SELF; echo "?action=results\">Vis resultat</font></p>"; foot(); } //################## Function to show results ######################## function results(){ include('config.php'); head(); $data=file($datafile); $nb_answers=count($data); $votes=0; $a=1; do{ $subdata=explode("][",$data[$a]); $votes += $subdata[2]; $a++; }while($a < $nb_answers); $a=1; $b="answerv"; $v=100/$votes; echo "<p align=\"center\"><font size=\"$fontsize\" face=\"$font\" color=\"$textcolor\">$data[0] ($votes stemmer)<br><br>"; do{ $subdata=explode("][",$data[$a]); $av = $subdata[2] * $v; echo "<font size=\"$fontsize\" face=\"$font\" color=\"$textcolor\">$subdata[0]"; printf(" %01.1f", $av); echo"%<br>"; $p2v = 100-$av; echo "<img src=\"$subdata[1]\" width=\"$av\" height=\"10\"><img src=\"$image\" width=\"$p2v\" height=\"10\"><br>"; $a++; } while ($a < $nb_answers); echo "<br>"; foot(); } //###################### Engine #################################### check($REMOTE_ADDR); if ($valid=="0"){ results();} elseif ($action=="results") { results(); } elseif ($save=="yes" && $valid!="0") { save($Answer); record($REMOTE_ADDR); results();} elseif ($action=="save" && !empty($valid)) { results(); } elseif ($action!="save" && $valid!="0"){ form($PHP_SELF); } ?> -------------------- På forhånd tak for hjælpen! Hygge
Annonceindlæg tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Jeg tror ikke folk har lyst til at gætte sig frem til hvilke variable du henter fra adresselinien....
Jamen skal du bruge dem når den bare skal skrives om så den virker med register_globals off? Scriptet virker jo fint nok når register_globals er on. Hygge
Du kan som en nødløsning prøve at insætte dette i starten af scriptet: foreach($_REQUEST as $key => $val) { $$key = $val; } foreach($_SERVER as $key => $val) { $$key = $val; }
Detox, nødløsning? Er det da en dårlig løsning? Mads
detox, ikke en god løsning - Desuden kan det samme opnås ved extract($_REQUEST); bb_maze: erstat: $PHP_SELF -> $_SERVER['PHP_SELF'] $REMOTE_ADDR -> $_SERVER['REMOTE_ADDR'] Alle form post varible skal hedde $_POST['variabelnavn'] og variable i URL'en skal hedde $_GET['variabelnavn']
Coderdk, kan du ikke komme med et eksempel på en udskiftning af de to sidste ting? Altså: "Alle form post varible skal hedde $_POST['variabelnavn'] og variable i URL'en skal hedde $_GET['variabelnavn']" Hygge
Eeerh, hvis du har et input felt, "alder", i en form som har METHOD="POST" skal du tilgå den med $_POST['alder'] hvis du har alder i URL'en som:
http://www.example.dk/script.php?alder=2245 skal du tilgå den med: $_GET['alder'] - du kan dog bruge $_REQUEST['alder'] til begge...
Hmm... Kan godt ordne de to første ting, de er såmænd næmme nok, men de to sidste detaljer, dem kan jeg altså ikke lige greje :( :/ Kan du komme med et eksempel fra koden? Hygge
Har fået en til at kigge på det, og han fik følgende, men det virker ikke... Er der nogle fejl? <body bgcolor="#E9E9E2"><?php function head() { include('config.php'); echo "<table width=\"120\" border=\"0\" cellpadding=\"1\" cellspacing=\"1\"> <tr><td bgcolor=\"$tableborder\"> <table width=\"120\" border=\"0\" cellpadding=\"0\" cellspacing=\"\" align=\"center\"> <tr><td bgcolor=\"$bgcolor\">"; } function foot () { echo "</td></tr></table></td></tr></table>"; } function record($_SERVER[REMOTE_ADDR]) { include('config.php'); $fp=fopen("$ip_file", "a+"); fputs ($fp,$REMOTE_ADDR."][".time()."\n"); fclose($fp); } function check($_SERVER[REMOTE_ADDR]) { include('config.php'); global $valid; $ip=$_SERVER['REMOTE_ADDR']; $data=file("$ip_file"); $now=time(); foreach ($data as $record) { $subdata=explode("][",$record); if ($now < ($subdata[1]+3600*$timeout)) { if ($ip == $subdata[0]) { $valid=0; break; }}}} //##################### Save data ############################## function save($answer){ global $answer; include('config.php'); $data=file($datafile); $subdata=explode("][",$data[$answer]); $subdata[2]+=1; $data[$answer]=implode("][", $subdata); $data[$answer]=$data[$answer]."\n"; $fp=fopen($datafile,"w+"); $a=0; do{ fputs($fp,$data[$a]); $a++; }while($a<count($data)); fclose($fp); } //########################## Show Form ############################ function form($PHP_SELF){ include('config.php'); head(); echo "<font size=\"$fontsize\" face=\"$font\" color=\"$textcolor\"><form method=\"post\" action=\"index.php?side=vote\"><p align=\"center\">"; $data=file($datafile); $question=$data[0]; $nb_options=count($data)-1; echo "$question</p>"; for($nb=1;$nb <= $nb_options; $nb++){ $option=explode("][","$data[$nb]"); echo "<input type=\"radio\" name=\"answer\" value=\"$nb\"> "; echo "$option[0]<br>"; } echo "<input type=\"hidden\" name=\"save\" value=\"yes\">"; echo "<p align=\"center\"><input type=\"submit\" name=\"Submit\" value=\"Submit\"></form></font>"; echo "<font size=\"$fontsize\" face=\"$font\" color=\"$textcolor\"><a href=\""; echo "index.php?side=vote"; echo "&action=results\">Vis resultat</font></p>"; foot(); } //################## Function to show results ######################## function results(){ include('config.php'); head(); $data=file($datafile); $nb_answers=count($data); $votes=0; $a=1; do{ $subdata=explode("][",$data[$a]); $votes += $subdata[2]; $a++; }while($a < $nb_answers); $a=1; $b="answerv"; $v=100/$votes; echo "<p align=\"center\"><font size=\"$fontsize\" face=\"$font\" color=\"$textcolor\">$data[0] ($votes stemmer)<br><br>"; do{ $subdata=explode("][",$data[$a]); $av = $subdata[2] * $v; echo "<font size=\"$fontsize\" face=\"$font\" color=\"$textcolor\">$subdata[0]"; printf(" %01.1f", $av); echo"%<br>"; $p2v = 100-$av; echo "<img src=\"$subdata[1]\" width=\"$av\" height=\"10\"><img src=\"$image\" width=\"$p2v\" height=\"10\"><br>"; $a++; } while ($a < $nb_answers); echo "<br>"; foot(); } //###################### Engine #################################### check($_SERVER[REMOTE_ADDR]); if ($valid=="0"){ results();} elseif ($_GET[action]=="results") { results(); } elseif ($_POST[save]=="yes" && $valid!="0") { save($Answer); record($_SERVER[REMOTE_ADDR]); results();} elseif ($_GET[$action]=="save" && !empty($valid)) { results(); } elseif ($_GET[$action]!="save" && $valid!="0"){ form($PHP_SELF); } ?> Hygge
Ja du har en form der submitter med post - den har et felt "answer", så du skal erstatte $answer med $_POST['answer'] eller $_REQUEST['answer']
26. juni 2004 - 14:22
#11
coderdk: Smider du et svar? Så får du point. Tak for hjælpen! Hygge
26. juni 2004 - 15:07
#12
Selvfølgelig :)
26. juni 2004 - 17:38
#13
Tak for hjælpen :) Hygge
Vi tilbyder markedets bedste kurser inden for webudvikling