magenschmerz: Variablen per $_SERVER['SERVER_NAME'] übergeben

Hi,

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.
ok, ich bin jetzt nich sicher wie ich vorgehe, hab das jetzt so:

<FORM action="'.$_SERVER['PHP_SELF'].'" method="POST" name="some">
textfeld + Submit-button
</form>

dann Fehlerprüfung (schreib ich hier nicht rein):

if (isset($_POST['search'])){
   @session_start();
   $_SESSION["string"] = $string;
    header("Location: http://"; . $_SERVER['SERVER_NAME']. "/folge_script.php");
}

click ich auf submit-button,sagt Browser : "Seite nicht gefunden", Muß ich die komplette URL im header angeben, (ich denke da liegt der Fehler)?
Muss ich der Variable: $_SERVER['SERVER_NAME'] erst einen Wert zuweisen?
wie übergebe ich $_SESSION["string"] an das Folge-Script

Voller Dankbarkeit für jeden Tip !!

gr.
magenschmerz

  1. 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

    1. jo, das war's hab jetzt <form></form> geändert:

      <FORM action="'.$_SERVER['Server_Name'].'" method="POST" name="some" target="_self">

      da ich das noch nie benutzt habe ist mir zwar nicht ganz klar warum, ich habe bisher immer (in <form> ) auf das Ursprungs-Script verwiesen,
      aber so scheint es zu laufen.

      irgendwelche Einwände ?

      Danke
      Gruß
      ms

      1. <FORM action="'.$_SERVER['Server_Name'].'" method="POST" name="some" target="_self">

        da ich das noch nie benutzt habe ist mir zwar nicht ganz klar warum, ich habe bisher immer (in <form> ) auf das Ursprungs-Script verwiesen,
        aber so scheint es zu laufen.

        irgendwelche Einwände ?

        Ja, das kann so nie und nimmer richtig sein, es sei denn Du hast eine ganz extrem merkwürdige Umgebung.

        In server_name steht der (Haupt-) Domainname des Webservers, in Deinem Formular müsste jetzt also etwas à la '<form action="example.com">' stehen. Es würde noch am ehesten funktionieren, wenn vorne ein "http://" vorstehen würde und Dein Skript die Standarddatei für den Server (also index.php) wäre.

        Soll das Formular an sich selbst geschickt werden, dann ist request_uri aus $_SERVER in aller Regel die beste Wahl, gefolgt von script_uri oder php_self. Die letzteren beiden enthalten immer denselben Wert; request_uri enthält die URI, die der Benutzer eingegeben hat, dies kann ebenfalls script_uri/php_self entsprechen, muß aber nicht.

        Prüfe nochmal den HTML-Quelltext, insbesondere das <form>-Element, den Dein Browser beim ersten Aufruf des Skriptes empfängt, sowie die Daten in $_SERVER (zum Beispiel mit php_info(INFO_VARIABLES)).

        Gruß,
          soenk.e