Formulare und method=get



  • Hi!

    Ich habe ein extrem blödes Problem beim schreiben einer kleinen Seite mit php.

    Also: Man befindet sich auf einer Seite, dessen URL zum Beispiel so aussieht: http://www.site.de/Site.php?Query=MachWas. So weit so gut. Nun soll man sich auf dieser Seite einloggen können. Also zeige ich dem User auf Wunsch ein Formular, wo er das tun kann.

    <form action="Site.php?Query=MachWas" method="get">
    	<p>Username:<br>
    		<input name="UserName" type="text" size="30" maxlength="50">
    	</p>
    	<p>User ID:<br>
    		<input name="UserID" type="text" size="30" maxlength="20">
    	</p>
    	<input type="submit" value=" Submit ">";
    </form>
    

    Eigentlich sollte die URL nach abschicken des Formulars http://www.site.de/Site.php?Query=MachWas&UserName=USER&UserID=111 heissen. Ist aber nicht so. Stattdessen heisst sie http://www.site.de/Site.php?UserName=USER&UserID=111. Hat jemand ne Idee, wie ich das so hin kriege, dass es funktioniert?

    Klar ich könnte, es per method=post machem, aber das würde dann mein Konzept durcheinander werfen. Deswegen hoffe ich, dass es da noch ne andere Möglichkeit gibt.



  • Definiere für den Query-Parameter einfach ein verstecktes Formularfeld, anstatt ihn im action-Attribut anzugeben.



  • Danke!
    Das würde funktionieren. Gibt da zwar trotzdem noch ein paar Probleme mit meinem Code aber die dürften nicht allzu schwer zu lösen sein.

    Allerdings finde ich das Verhalten des Browsers in diesem Fall total unlogisch. Gibts ne vernünfitge Erklärung, warum der Querystring einfach abgeschnitten wird?



  • Warum der Browser das so handhabt weiß ich auch nicht, aber du könntest auch POST verwenden - ist doch für einen Login eh schöner 😉



  • Ja, post finde ich persönlich auch schöner. Allerdings gibts da ein Problem.
    Wenn der User das Einlogg-Formular bestätigt, wird Username und ID an das php Script gepostet. Klickt der User auf der Seite aber auf einen link, wird der Username und die ID nicht mitgepostet. Das bedeutet, dass er sich auf jeder Seite neu einloggen muss.

    Ich bräuchte also irgendeine Möglichkeit Daten an ein php Script zu posten, wenn es (per link) aufgerufen wird. Geht das?



  • Die Daten bei jedem Link im QueryString zu übergeben ist schon recht unschön.
    Stattdessen verwendet man i.d.R. Sessions, um die Daten zu speichern.



  • Ich würde dir sehr empfehlen sowas über Sessions zu regeln. 🙂



  • Ich hab mich mal ein wenig in die Sessions reingelesen. Zwar muss ich, um sie zu benutzen, einiges neu schreiben, aber das scheint die Arbeit wert zu sein.

    Vielen Dank euch beiden :)!



  • Verdammt! Noch ein Problem.
    Folgendes Script

    <?php
    session_start();
    ?>
    

    bringt diesen Berg an Fehlern

    Warning: session_start(): open(/tmp\sess_9e3e5d19797f9db6db366655f2bee04f, O_RDWR) failed: No such file or directory (2) in D:\Coding\Homepage\newsseite\News.php on line 2

    Warning: session_start(): Cannot send session cookie - headers already sent by (output started at D:\Coding\Homepage\newsseite\News.php:2) in D:\Coding\Homepage\newsseite\News.php on line 2

    Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at D:\Coding\Homepage\newsseite\News.php:2) in D:\Coding\Homepage\newsseite\News.php on line 2

    Warning: Unknown(): open(/tmp\sess_9e3e5d19797f9db6db366655f2bee04f, O_RDWR) failed: No such file or directory (2) in Unknown on line 0

    Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0

    Hat jemand ne Idee, was ich falsch mache?



  • Auf deinem lokalen Web-Server, oder? Dann musst du den Temp-Pfad in der php.ini richtig einstellen (gültiges Verzeichnis) 😉



  • Super, jetzt funktioniert auch das!
    Vielen Dank nochmal! 🙂


Anmelden zum Antworten