sid1900 Geschrieben 9. März 2004 Geschrieben 9. März 2004 Hallo Leute, ich hätte da mal ein Problem mit PHP. Ich will alphanumerische Zeichen speichern und übertragen (Formular), das funktioniert bei mir mit "richtigen" Buchstaben wie: A,b,c,... usw. und Zeichenketten. Numerische Werte werden auch gespeichert. Wenn ich aber Zeichen wie +,-,*,/,...usw. übertragen möchte, gehen diese nach zwei oder drei Eingaben verloren. Was mache ich Falsch und noch wichtiger konnte mir jemand folgen? Danke
etreu Geschrieben 9. März 2004 Geschrieben 9. März 2004 überträgst du die per GET, POST, COOKIE oder SESSION?
sid1900 Geschrieben 9. März 2004 Autor Geschrieben 9. März 2004 method = post und wie hilft mir das weiter?
etreu Geschrieben 9. März 2004 Geschrieben 9. März 2004 hättest du die daten per GET übertragen, hätte das die fehlerquelle sein können. sind die daten immer beim gleichen script weg? wie sieht der zugriff auf die daten aus?
kills Geschrieben 9. März 2004 Geschrieben 9. März 2004 Original geschrieben von Enrico T. überträgst du die per GET, POST, COOKIE oder SESSION? kann man mit einem formular auch mit cookie und session übertragen? @sid1900: vielleicht ma so versuchen: <form enctype="text/plain">
sid1900 Geschrieben 10. März 2004 Autor Geschrieben 10. März 2004 Moin, nachdem ich die Zeile "enctype="text/plain"" in meinen Formularkopf eingefügt hatte, wurde an der Stelle wo ich meine Gesamtzahl(zg) ausgebe nichts mehr angezeigt. <td width="100%"><input type="Text" name="wert" size="24%" maxlength="10" value= "<?echo $zg?>" > Ich würde mal sagen, das das Problem woanders liegen muss. Hier noch der Formularkopf: <? echo "<form action=tr.php?zg=$zg&eingabe=$eingabe&op=$op&opz=$opz&z1=$z1&z2=$z2 method=post>" ?>
kLeiner_HobBes Geschrieben 10. März 2004 Geschrieben 10. März 2004 Hallo! Original geschrieben von sid1900 ..., gehen diese nach zwei oder drei Eingaben verloren. Was heißt "zwei oder drei Eingaben?". Und benutzt du <input type="text" oder andere Formularfelder? gruß Benjamin
etreu Geschrieben 10. März 2004 Geschrieben 10. März 2004 sehe ich das richtig, dass du alte formulardaten an die url dranhängst?
sid1900 Geschrieben 10. März 2004 Autor Geschrieben 10. März 2004 An die url hänge ich die Variablen die in meinem PHP-teil verwendet werden. Für die Eingabe verwende ich z.B.: <input type="submit" name="wert" value="%"> Das heißt. Ich klicke auf einen Button und übergebe das value="xyz" an das PHP- Progi, welches dann die Eingabe entsprechend auswertet.
Spike Geschrieben 10. März 2004 Geschrieben 10. März 2004 Hi, häng deine alten Variablen nicht an die URL dran, sondern pack sie in Hidden Inputs. Dann werden sie mit dem Formulararray (in deinem Falle $_Post[]) übergeben. Natürlich kann es sein, das bei der Übergabe via URL Sonderzeichen verloren gehen (weil sie nicht in URLs auftauchen dürfen). Dafür gab es eine PHP-Funktion zum Umwandeln, ich komm aber jetzt nur nicht drauf welche das war ... Schau auch hier mal für Infos: http://www.dclp-faq.de/ch/ch-webvariablen.html
kLeiner_HobBes Geschrieben 10. März 2004 Geschrieben 10. März 2004 Wenn du die Variablen unbedingt per GET, also in der URL übergeben willst, dann codiere die Daten vorher mit der Funktion urlencode() und decodiere sie im Zielscript mit urldecode(). Allerdings schließe ich mich Spike an, du solltest das wenigstens über hidden-fields übergeben, wenn du nicht gleich die session-Funktionen verwendest. Gruß Benjamin
etreu Geschrieben 10. März 2004 Geschrieben 10. März 2004 genau darauf wollte ich schon mit meiner ersten frage hinaus
sid1900 Geschrieben 10. März 2004 Autor Geschrieben 10. März 2004 Wenn du die Variablen unbedingt per GET, also in der URL übergeben willst, dann... Wer sagt den das ich mit GET übertragen will? Zurzeit verwende ich post oder meinst du das mit get der Fehler nicht auftritt? Kann es ja mal probieren. Hier mal ein Teil der Quelldatei (soll mal ein Taschenrechner werden): <blabla> <? if ($wert=="Loeschen") { $zg=""; $z1=""; $z2=""; $op=""; $opz=0; $eingabe=0; } else { //$opz=0; if($wert>='0' && $wert<='9') { if($eingabe==0) { $zg=$wert; $eingabe=1; //echo "zg(e=0)= ",$zg,"<br>"; } else { $zg=$zg*10+$wert; //echo "zg(e=1)= ",$zg,"<br>"; } } else { //echo "wert= ",$wert,"<br>"; if($opz<1) { $z1=$zg; //echo "z1= ",$z1,"<br>"; switch($wert) { case '+': $op=plus; break; case '-': $op=minus; break; case '*': $op=mul; break; case '/': $op=div; break; case '=': $opz=0; break; case 'x²': $zg=$z1*$z1; $opz=-1; break; case '%': $zg=$z1/100; $opz=-1; break; case 'eins/x': $zg=1/$z1; $opz=-1; break; case '+/-': $zw_wert=$zg*2; $zg=$zg-$zw_wert; $opz=-1; break; // default: // $zg="Error"; } $eingabe=0; $opz++; //echo "op= ",$op,"<br>"; } else { $z2=$zg; //echo "z2= ",$z2,"<br>"; switch($op) { case 'plus': $zg=$z1+$z2; break; case 'minus': $zg=$z1-$z2; break; case 'mul': $zg=$z1*$z2; break; case 'div': if($z2==0) $zg=Error; else $zg=$z1/$z2; break; // default: // $zg="Error"; } $opz=0; $eingabe=0; } } } ?> <? echo "<form action=tr.php?zg=$zg&eingabe=$eingabe&op=$op&opz=$opz&z1=$z1&z2=$z2 method=post>" ?> <table border="0" size="50%" bgcolor="#C0C0C0" align="center"> <tr> <td> <table border="0" bgcolor="#C0C0C0"> <tr> <td> TR</td> </tr> <tr> <td width="100%"><input type="Text" name="wert" size="24%" maxlength="10" value= "<?echo $zg?>" disabled> </td> </tr> </table> <table border="0" bgcolor="#C0C0C0"> <tr> <td width="10%"><div align="right"><input type="submit" name="wert"value="Loeschen"></div></td> </tr> </table> <br> <table border="0" bgcolor="#C0C0C0" size="100%"> <tr align="center"> <td width="10%"> <input type="submit" name="wert" value="7" accesskey="7"></td> <td width="10%"> <input type="submit" name="wert" value="8" accesskey="8"></td> <td width="10%"> <input type="submit" name="wert" value="9" accesskey="9"></td> <td width="10%"> <input type="submit" name="wert" value="/" accesskey="/"></td> <td width="10%"> <input type="submit" name="wert" value="%"></td> </tr> . . . </table> </td> </tr> </table> </form> <blabla>
etreu Geschrieben 10. März 2004 Geschrieben 10. März 2004 Du solltest anstelle von : <? echo "<form action=tr.php?zg=$zg&eingabe=$eingabe&op=$op&opz=$opz&z1=$z1&z2=$z2 method=post>" ?> <? echo "<form action=tr.php?". urlencode("zg=$zg&eingabe=$eingabe&op=$op&opz=$opz&z1=$z1&z2=$z2"). " method=post>"; ?> [/PHP] benutzen
sid1900 Geschrieben 10. März 2004 Autor Geschrieben 10. März 2004 Habs hinbekommen, danke für Eure Hilfe. :uli
HELLinG3R Geschrieben 10. März 2004 Geschrieben 10. März 2004 nur mal so als anmerkung: wo liegt eurer meinung nach der vorteil von sessions? (ich habe bisher erst mit cookie get und post gearbeitet... sorry für die daufrage)
etreu Geschrieben 10. März 2004 Geschrieben 10. März 2004 GET, POST und COOKIE sind auf jeden Fall Daten die vom Client kommen. In kritischen Anwendungen könnten die Daten u.U. zu Sicherheitslücken führen. SESSIONs kann man ggf. komplett serverseitig laufen lassen. Ausserdem hat da nicht das Problem sich über die Übertragung Gedanken zu machen.
HELLinG3R Geschrieben 10. März 2004 Geschrieben 10. März 2004 ich kann also beispielsweise 100 gleichlautende variablen von usern serverseitig speichern und auch getrennt ansprechen ? also das jeder nur seine variablen benutzt, so wie bei get, post und cookie?
etreu Geschrieben 10. März 2004 Geschrieben 10. März 2004 Ja. Denn alle werden durch die eindeutige Session-ID angesprochen.
Spike Geschrieben 11. März 2004 Geschrieben 11. März 2004 Ausserdem ist das komfortabler, sobald man die Variablen über mehrere Seiten hinweg braucht, z.B. in einem geschützten Bereich. Sessions werden immer gebraucht, wenn man eine anständige Userverwaltung machen möchte. Aber auch für komplexe Formularscripts (z.B. in Shops) sind die von nöten.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden