Strulli: Übernahme von value im Affenformular..

Huhu.. ich stehe gerade auf dem Schlauch O.o
Ich weiß nicht, warum der Wert meiner Variable nicht als Value in meinem Formular auftaucht...

Es ist bestimmt ein Fehler, der so simpel ist, dass ich ihn genau aus diesem Grund nicht finde. :(
Beispiel:

<?php  
$text = "lorum";  

  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
          "http://www.w3.org/TR/html4/loose.dtd">  
<html>  
<head>  
<title>Lottozahlen <?php echo $titel; ?></title>  
</head>  
<body>  
<form action="index.php" method="POST">  
<fieldset>  
  <legend accesskey=A>Testeingabe</LEGEND>  
  <p>  
    <label accesskey=B>  
      <input type="text" name="text" value="<?php echo $text; ?>" size="20" maxlength="50">  
    </label>  
  </p>  
</fieldset>  
<input type="submit" name="ok" value="OK">  
</form>  
</body>  
</html>  

Wo versteckt sich der Fehler??
Liebe Grüße, Strulli

  1. <?php

    $text = "lorum";

      
    Nachtrag:  
    Es soll natürlich  
    ~~~php
      
    <?php  
    $text = "lorum";  
    ?>  
    
    

    heißen.

  2. Hi,

    Ich weiß nicht, warum der Wert meiner Variable nicht als Value in meinem Formular auftaucht...

    Schalte das error_reporting auf E_ALL und display_errors auf on - und dann schau an der Stelle im vom Script ausgegebeben Quelltext nach.

    MfG ChrisB

    --
    „This is the author's opinion, not necessarily that of Starbucks.“
  3. Hello,

    Ich weiß nicht, warum der Wert meiner Variable nicht als Value in meinem Formular auftaucht...

    <input type="text" name="text" value="<?php echo $text; ?>" size="20" maxlength="50">

    Das leigt daran, dass PHP schon seit einiger Zeit die Methoden der Parameterübertragung wieder trennt in

    • GET-Parameter       also aus der Adressleiste
    • POST-Parameter      aus einem Post-Request, action="post"
    • COOKIE-Parameter    aus Cookies

    und ein paar weitere

    Ein Kondtrukt, wie das folgende, könnte Dir weiterhelfen.

    if (magic_quotes_gpc())
      {
          $test = stripslashes($text);
      }
      $text = htmlspecialchars($text,ENT_QUOTES);

    ...

    <input type="text" name="text" value="<?php echo $text; ?>" size="20" maxlength="50">

    Schau dir http://www.php.net/manual/en/language.variables.predefined.php an.

    Liebe Grüße aus Syburg bei Dortmund

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Hellihello

      Hello,

      Ich weiß nicht, warum der Wert meiner Variable nicht als Value in meinem Formular auftaucht...

      <input type="text" name="text" value="<?php echo $text; ?>" size="20" maxlength="50">

      Das leigt daran, dass PHP schon seit einiger Zeit die Methoden der Parameterübertragung wieder trennt in

      Schlau schlau, aber wieso nimmt er nicht <?= $_GET["text"]?> ?

      Dank und Gruß,

      frankx

      --
      tryin to multitain  - Globus = Planet != Welt
      1. Hi,

        Das leigt daran, dass PHP schon seit einiger Zeit die Methoden der Parameterübertragung wieder trennt in

        Schlau schlau, aber wieso nimmt er nicht <?= $_GET["text"]?> ?

        Weil sein Formular method=post verwendet :-)

        Und magic_quotes_gpc haben mit dem generellen Zugriff bei register_globals=off erst mal nichts zu tun, sondern lediglich mit den eventuell zusaetzlich eingefuegten Backslashes vor Sonderzeichen.

        MfG ChrisB

        --
        „This is the author's opinion, not necessarily that of Starbucks.“
      2. Hello,

        Das leigt daran, dass PHP schon seit einiger Zeit die Methoden der Parameterübertragung wieder trennt in

        Schlau schlau, aber wieso nimmt er nicht <?= $_GET["text"]?> ?

        Da er in

        <form action="index.php" method="POST">

        festgelegt hat, die Parameter per POST-Methode und nicht per GET-Methode zu übertraren

        Liebe Grüße aus Syburg bei Dortmund

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
      3. Hello,

        Schlau schlau, aber wieso nimmt er nicht <?= $_GET["text"]?> ?

        Klare, klar... da fehlte der wichtigste Teil, nämlich das $_POST['text']

        <?=

        sollte man aber nicht benutzen. Die sogenannten Short-Open-Tags machen irgendwann nur Probleme mit XML oder auch, wenn sie auf dem jeweiligen Server sowieso nicht aktiviert sind.

        Warum man hier $_GET nicht benutzt, hat Dir ChrisB schon geschrieben.

        Liebe Grüße aus Syburg bei Dortmund

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Hellihello

          Hello,

          Schlau schlau, aber wieso nimmt er nicht <?= $_GET["text"]?> ?

          Klare, klar... da fehlte der wichtigste Teil, nämlich das $_POST['text']

          <?=

          sollte man aber nicht benutzen. Die sogenannten Short-Open-Tags machen irgendwann nur Probleme mit XML oder auch, wenn sie auf dem jeweiligen Server sowieso nicht aktiviert sind.

          Sieht das ZendFramework anders. Lässt sich ja auch u.U. im Subdirectory aus/einschalten.

          Warum man hier $_GET nicht benutzt, hat Dir ChrisB schon geschrieben.

          Naja, ich hatte die method übersehen. Aber grundsätzlich würde ich die globalen Variablen $_GET bzw. $_POST auch so nutzen, wenn sie nicht vorbehandelt werden müssten. <?=htmlspecialchars($_POST)?> wärs dann wohl.

          Dank und Gruß,

          frankx

          --
          tryin to multitain  - Globus = Planet != Welt
          1. Hello,

            Naja, ich hatte die method übersehen. Aber grundsätzlich würde ich die globalen Variablen $_GET bzw. $_POST auch so nutzen, wenn sie nicht vorbehandelt werden müssten. <?=htmlspecialchars($_POST)?> wärs dann wohl.

            Das kommt immer darauf an, was man erreichen will.
            Ich mache das grundsätzlich am liebsten so:

            $_POST   |
               $_GET    | =>  bleiben bis zum Ende des Scriptes erhalten

            $_data     =>  erhält alle Daten, mit denen im Script gearbeitet werden muss.

            $_out      =>  beinhaltet alle meine Daten zur Ausgabe ins HTML vorbehandelt

            Solange es nicht um Monstervariablen geht, reicht dafür der Speicher auch aus und man hat immer Übersicht über den Stand der Dinge...

            Liebe Grüße aus Syburg bei Dortmund

            Tom vom Berg

            --
            Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
            1. Hellihello

              Hello,

              Naja, ich hatte die method übersehen. Aber grundsätzlich würde ich die globalen Variablen $_GET bzw. $_POST auch so nutzen, wenn sie nicht vorbehandelt werden müssten. <?=htmlspecialchars($_POST)?> wärs dann wohl.

              Das kommt immer darauf an, was man erreichen will.
              Ich mache das grundsätzlich am liebsten so:

              $_POST   |
                 $_GET    | =>  bleiben bis zum Ende des Scriptes erhalten

              $_data     =>  erhält alle Daten, mit denen im Script gearbeitet werden muss.

              $_out      =>  beinhaltet alle meine Daten zur Ausgabe ins HTML vorbehandelt

              Solange es nicht um Monstervariablen geht, reicht dafür der Speicher auch aus und man hat immer Übersicht über den Stand der Dinge...

              Jau, mir war so, als hätte ich in Diskussionen hin und wieder gelesen, dass das rumkopieren der globalen POST/GET (REQUEST) nicht immer nötig/effizient ist. Zudem sieht man dem Datum im Script dann auch noch an, wo es hier kommt.

              Na, PHP lebt (;-).

              Dank und Gruß,

              frankx

              --
              tryin to multitain  - Globus = Planet != Welt
    2. Hello,

      Korrektur und auch Entschuldigung an frankx natürlich :-)

      Die Zeile musste selbstverständlich so lauten:

      $text = htmlspecialchars($POST['text'],ENT_QUOTES);

      *duck*

      Liebe Grüße aus Syburg bei Dortmund

      Tom vom Berg

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
      1. Hello,

        Korrektur und auch Entschuldigung an frankx natürlich :-)

        Die Zeile musste selbstverständlich so lauten:

        $text = htmlspecialchars($POST['text'],ENT_QUOTES);

        Gibt's denn das?

        $text = htmlspecialchars($_POST['text'],ENT_QUOTES);
                                     ---

        *doppelduck*

        Irgendwie haben die sieben Flaschen Wein seit XX wohl schon ihre Wirkung...

        Liebe Grüße aus Syburg bei Dortmund

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
      2. Hi,

        Die Zeile musste selbstverständlich so lauten:

        $text = htmlspecialchars($POST['text'],ENT_QUOTES);

        Davor gehoert aber auch noch die Abfrage, ob $_POST['text'] denn auch existiert.

        MfG ChrisB

        --
        „This is the author's opinion, not necessarily that of Starbucks.“
        1. Hello,

          Die Zeile musste selbstverständlich so lauten:

          $text = htmlspecialchars($POST['text'],ENT_QUOTES);

          Davor gehoert aber auch noch die Abfrage, ob $_POST['text'] denn auch existiert.

          Genau! Es ist gleich Weihnachten in Neuseeland und ich bin sehr unaufmerksam.

          $text = '';                 ## lokale Variable auf einen garantierten Typ und Wert setzen

          if (isset($_POST['text']))  ## Wurde 'text' überhaupt per Post übertragen?
            {
                if (magic_quotes_gpc()) ## Wenn die Magic Quotes eingeschaltet sind
                {
                    $test = stripslashes($_POST['text']);  ## mache sie rückgängig
                }
            }

          $text = htmlspecialchars($text,ENT_QUOTES);

          ...

          <input type="text" name="text" value="<?php echo $text; ?>" size="20" maxlength="50">

          So; nun aber!
          Bist Du jetzt einverstanden?

          Liebe Grüße aus Syburg bei Dortmund

          Tom vom Berg

          --
          Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
          1. Hello,

            $text = '';                 ## lokale Variable auf einen garantierten Typ und Wert setzen

            if (isset($_POST['text']))  ## Wurde 'text' überhaupt per Post übertragen?
              {
                  if (magic_quotes_gpc()) ## Wenn die Magic Quotes eingeschaltet sind
                  {

            $text = stripslashes($_POST['text']);  ## mache sie rückgängig
            #             ---

            }
              }

            $text = htmlspecialchars($text,ENT_QUOTES);

            ...

            <input type="text" name="text" value="<?php echo $text; ?>" size="20" maxlength="50">

            Hast Du den Fehler noch nicht entdeckt? :-P

            Ich glaube, ich beschränke mich heute lieber aufs Fernsehen.

            Liebe Grüße aus Syburg bei Dortmund

            Tom vom Berg

            --
            Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
  4. Hellihello

    Wo versteckt sich der Fehler??

    In deiner Fehlersuche. Frag nicht, warum der Wert da nicht auftaucht, sondern bau ein Script, wo er auftaucht und erweitere es dann. Und poste nicht unvollständigen Code, denn der Fehler liegt ja offebar darin, dass du $title doch nicht richtig setzt oder überschreibst, oder falsch schreibst,

    Dank und Gruß,

    frankx

    --
    tryin to multitain  - Globus = Planet != Welt