POST Frage
E wie einfach
- php
Hallo,
ich bastel grade an einem kleinen Script, das auf jeder beliebigen Seite eingebunden können werden soll.
if(isset($_POST['userID']) && !empty($_POST['userID']) && is_numeric($_POST['userID']) && isset($_POST['Pass']) && !empty($_POST['Pass'])) { ...
}
else {
?>
Bitte füllen sie alle Daten korrekt aus!<br />
<form action="insert.php" method="POST">
<input type="text" name="userID" /><br />
<input type="password" name="Pass" /><br />
<input type="submit" value="Einloggen" name="Insert" />
</form>
<?php
}
Jetzt frage ich mich aber gerade, was passiert, wenn man das auf seiner Seite irgendwie beliebig einbindet. Stellen wir uns mal vor derjenige hat ebenfalls ein Formular mit userID und Pass als POST Variablen. Was dann? Werden dann die Werte in meinem Formular benutzt? Und wenn ja wie kann man das umgehen? Kann man irgendwie angeben, dass nur POST Eingaben aus genau dieser insert.php genommen werden können?
Hi,
ich bastel grade an einem kleinen Script, das auf jeder beliebigen Seite eingebunden können werden soll.
[...]
Jetzt frage ich mich aber gerade, was passiert, wenn man das auf seiner Seite irgendwie beliebig einbindet. Stellen wir uns mal vor derjenige hat ebenfalls ein Formular mit userID und Pass als POST Variablen. Was dann?
Ja - was dann?
Welches Problem siehst du dabei?
Werden dann die Werte in meinem Formular benutzt?
Von wem, für was?
Kann man irgendwie angeben, dass nur POST Eingaben aus genau dieser insert.php genommen werden können?
Nein. HTTP kennt keine Herkunft.
MfG ChrisB
Ja - was dann?
Welches Problem siehst du dabei?
Ok, ich glaube ich muss an meiner Formulierung arbeiten: Ich meine mein Script da wird auf einer externen Seite eingebunden. Nun ist da ein Formular von mir, wo man userid und Passwort eingeben kann. Was aber wenn auf der Seite jemand ebenfalls soetwas hat, also ein Formular, dass ebenfalls $_POST['userID'] und $_POST['Pass'] benutzt. Kann es dann nicht zu Unstimmigkeiten kommen, indem man auf diesem Formular (nicht meinem), Werte eingibt, auf den Submitbutton klickt, die Seite neulädt und nun mein Script ebenfalls diese Werte benutzt? Kann das passieren? Dann wäre doch durch das Abschicken des anderen Formulares die beiden POST Werte gesetzt und mein Formular müsste diese verarbeiten.
Von wem, für was?
Siehe oben.
Hello,
Ok, ich glaube ich muss an meiner Formulierung arbeiten: Ich meine mein Script da wird auf einer externen Seite eingebunden. Nun ist da ein Formular von mir, wo man userid und Passwort eingeben kann. Was aber wenn auf der Seite jemand ebenfalls soetwas hat, also ein Formular, dass ebenfalls $_POST['userID'] und $_POST['Pass'] benutzt. Kann es dann nicht zu Unstimmigkeiten kommen?
Das hängt davon ab, ob Dein Formular vollständig ist und ein eigenes Action-Ziel oder zumindest einen Unterscheidungsparamter im Action-Attribut mitführt, wenn es ebenfalls an $_SERVER['SCRIPT_NAME'] gerichtet wird.
Das Action-Attribut musst Du also zusammenbauen.
Prüfen, ob $_SERVER['SCRIPT_NAME'] bereits Paramter enthält,
wenn nicht, dann einfach Deinen mit '?param=wert' anhängen,
wenn ja, mit '¶m=wert' anhängen.
Der Paramtername sollte dann aber genügend unterscheidbar sein.
Die zweite Kollisionsmöglichkeit liegt dann in der Reihenfolge der Auswertung.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Mahlzeit E wie einfach,
Ok, ich glaube ich muss an meiner Formulierung arbeiten:
Ja.
Ich meine mein Script da wird auf einer externen Seite eingebunden.
Wird es das? Wie wird es das?
Nun ist da ein Formular von mir, wo man userid und Passwort eingeben kann.
Genau. *EIN* Formular. Und dieses enthält genau die beiden von Dir definierten Eingabeelemente - sonst nichts. Wenn also ein Benutzer *DIESES* Formular abschicken will, dann sendet der Browser auch nur die in *DIESEN BEIDEN* Formularelementen enthaltenen Werte an eine Datei namens "insert.php" (weil diese als Ziel *DIESES* Formulars festgelegt wurde). Wo genau siehst Du da ein Problem?
Was aber wenn auf der Seite jemand ebenfalls soetwas hat, also ein Formular, dass ebenfalls $_POST['userID'] und $_POST['Pass'] benutzt.
Dann ist das ein *ANDERES* Formular. Wieso sollte sich das mit Deinem ins Gehege kommen?
Kann es dann nicht zu Unstimmigkeiten kommen, indem man auf diesem Formular (nicht meinem), Werte eingibt, auf den Submitbutton klickt, die Seite neulädt
Wieso wird die Seite neu geladen? Welche denn überhaupt? Die, die Dein Skript einbindet? Warum?
und nun mein Script ebenfalls diese Werte benutzt? Kann das passieren?
Wie sollte das? Wird das Formular, das in der Seite enthalten ist, die Dein Skript einbindet, denn ebenfalls an Dein Skript abgeschickt?
Du siehst: eher *NOCH MEHR* Fragen. Vielleicht solltest Du Dich (nochmal) mit den Grundlagen von HTTP, HTML und Web-basierter Formularverarbeitung vertraut machen ... mir scheint, da liegt noch so Einiges im Argen.
MfG,
EKKi
Hallo,
ich bastel grade an einem kleinen Script, das auf jeder beliebigen Seite eingebunden können werden soll.
Wenn das dein Hauptproblem ist, empfehler ich folgende
Includedatei:
[code lang=php]
<?php
// include Datei tu-nichts.php
// Diese Include Datei tut nicht!
// ... ist aber hervorragend Dokumentiert.
Aber beim weiterlesen sieht man ja, das deine Ansprüche steigen.
Auch da hilft Prof. Sakkkkare natülch weiter (meine Dr. Titel
wegen Fauheit aufgegeben
https://forum.selfhtml.org/?t=194837&m=1303423
if(isset($_POST['userID']) && !empty($_POST['userID']) && is_numeric($_POST['userID']) && isset($_POST['Pass']) && !empty($_POST['Pass'])) { ...
}
else {
?>
Bitte füllen sie alle Daten korrekt aus!<br />
<form action="insert.php" method="POST">
<input type="text" name="userID" /><br />
<input type="password" name="Pass" /><br />
<input type="submit" value="Einloggen" name="Insert" />
</form>
<?php
}
Wenn du das Script wirklich überall einbinden willst, dann musst
du einfach dafür sorgen, das eine "Variablenverwechlung" annähernd
ausgeschlossen ist. mit
userID_meine_uni_script statt userID
und
Pass_meine_uni_script statt Pass
bist du alle sorgen los!!!
Aber etwas anderes ist wichtiger: Da du in demselben Script, dass
das Formular ausgibt (<form>..</form>) auch die Formulardaten
bearbeiten willst (if(isset($_POST['userID_mein_uni_script']),
solltest du bei "action" im Form-Tag auch genau auf das Script
verweisen (nicht auf "insert.php"). Bastel dir aus §_GLOBAL[...]
und(oder) __FILE__ etc. eine passende action Ausgabe.
Gruß. Prof. Sakkkkare