Ich möchte den Inhalt einer Textbox an ein Script übergeben.
bisher machte ich das mit session_register(), post und get, bis ich las, daß das unsicher sein soll, und nicht mehr üblich.
Es ist per POST und GET unsicher, weil Du die Daten über den Browser des Benutzers sendest und da natürlich ein jeder mit wenigen HTTP-Kenntnissen Daten einschmuggeln kann.
Sessions sind hingegen sicher.
<FORM action="'.$_SERVER['PHP_SELF'].'" method="POST" name="some">
textfeld + Submit-button
</form>
if (isset($_POST['search'])){
@session_start();
Den Klammeraffen solltest Du besser nicht verwenden. Fehlermeldungen sind dazu da, gelesen zu werden. Anders ausgedrückt: Wie willst Du Fehler entdecken, wenn Du die Meldungen dazu unterdrückst?
$_SESSION["string"] = $string;
header("Location: http://"; . $_SERVER['SERVER_NAME']. "/folge_script.php");
}
Verwende den passenden Statuscode für Weiterleitungen in Folge von POST-Anfragen:
header("HTTP/1.1 303 See other");
header("Location: http:// usw.
Siehe http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.4.
click ich auf submit-button,sagt Browser : "Seite nicht gefunden",
Du hast zwei Adressen, die falsch sein können. Stimmt die im <form>-Element angegebene Adresse, d.h. funktioniert es ohne Weiterleitung mittels "Location"? Wenn ja, ist die Adresse der Weiterleitung falsch, wenn nicht, jene im <form>.
Muß ich die komplette URL im header angeben, (ich denke da liegt der Fehler)?
Du hast doch die komplette Adresse in der Weiterleitung angegeben, wie kann dann eine unvollständige der Fehler sein?
Muss ich der Variable: $_SERVER['SERVER_NAME'] erst einen Wert zuweisen?
Nein, auf gar keinen Fall, $_SERVER wird von PHP vollständig aufgefüllt. Du kannst natürlich prüfen, ob $_SERVER und $_SERVER["SERVER_NAME"] überhaupt existiert, denn bei alten PHP-Versionen hieß das Feld noch $HTTP_SERVER_irgendwas.
wie übergebe ich $_SESSION["string"] an das Folge-Script
Deine Vorgehensweise ist im Prinzip schon richtig.
Gruß,
soenk.e