ik werd bekloppt: GLOBALS!!!!

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • ik werd bekloppt: GLOBALS!!!!

    Moin moin,

    bin als php starter dabei mich mit dem Buch von Matthias Kannengiesser - PHP5/MySQL4 über php schlau zu machen.
    Doch leider arbeitet dieser in seinen ganzen Beispielen mit register_globals on.
    Da ich meine Skripte, wenn sie denn mal laufen, gerne auch zukünftig ohne viel rumgebastel nutzen will versuche ich sie vornherein mit den globalen Variablen auszustatten:

    Hierzu mein Problem:

    PHP-Code:
    <form action="<?php echo $_SERVER['PHP_SELF'?>" method="POST">
        <input type="text" name="xxx"><br>
        <input type="submit" name="submit" value="OK">
    </form>
    <?php
    $xxx 
    $_POST['xxx'];
    echo 
    $_POST['xxx'];
    ?>
    Als fehlermeldung bekomme ich im Internet explorer aber stets:
    Notice: Undefined index: xxx in C:\Programme\Apache Group\Apache2\htdocs\index.php on line 7

    Notice: Undefined index: xxx in C:\Programme\Apache Group\Apache2
    \htdocs\index.php on line 8
    Woran liegt das? Syntaktisch irgendwas falsch? falsche Globals? whatever?
    Noch kurze Info: Es ist möglich in das Info Feld etwas einzugeben und auf "OK" zu klicken, dann wird auch ordnungsgemäß ge-echoed und danach erscheint die Fehlermeldung auch nicht mehr.
    Es wäre aber doch trotzdem hässlich das zu übergehen und der User wird anfangs mit tausenden Fehlermeldungen überhäuft.
    Wie define ich also den Index von der (array)-variablen? "xxx".
    Über eine Lösung des Problems wäre ich sehr verbunden, da ich eigentlich ganz hieß darauf bin mal ein bißchen weiterzukommen. doch wenn dies bereits an den einfachsten Hürden scheitert...

    Gracias!
    Arnim

    P.S.: Suche & Google wurden genutzt...

  • #2
    Wenn du error_reporting auf E_ALL stehen hast, bekommst du mehr ausgaben vom Interpreter angezeigt als es normalerweise der Fall ist.

    PHP-Code:
    <?php
    error_reporting
    (E_ALL);

    echo 
    $_POST["irgendetwas"];
    ?>
    Das gibt eine Fehlermeldung (na nicht direkt FEHLER, aber halt ein Notice) da der index irgendetwas nicht existiert.

    Du hast 2 möglichkeiten.

    1) Du schreibst z.B

    PHP-Code:
    if (isset($_POST["irgendetwas"])) echo $_POST["irgendetwas"]; 
    2) Du schaltest error_reporting etwas runter
    error_reporting(E_ALL, ~E_NOTICE);
    Wovon ich dir abrate, da man mit E_ALL sauberer Programmieren kann.

    Normalerweise macht man z.B

    PHP-Code:
    $variable ""// Variable initialisieren
    $array = array(); // Array initialisieren
    // VOR dem benutzen dieser Variablen bzw Arrays 
    EDIT:

    Zu deinem P.S ... Ich glaube nicht das du die Suche bzw Google benutzt hast, da das Forum hier von dem Kram überquillt

    gruss Chris

    [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

    Kommentar


    • #3
      supér

      Vielen Dank hhcm für die schnelle hilfe..

      das mit dem error_reporting hatte ich auch schon rausgefunden, nur dachte ich / denke ich das man auch auf die php.ini eines providers keinen einfluß nehmen kann.(oder liege ich da falsch?) (zur zeit hab ich bei mir aufm rechner ein wamp system zur entwicklung) und von daher wollte ich solche fehler von vornherein vermeiden.
      naja, auf jeden fall dankeschön!

      arnim!

      Kommentar


      • #4
        Du brauchst keine php.ini um das an bzw ab zu stellen

        PHP-Code:
        error_reporting(E_ALL, ~E_NOTICE); 
        In deinem Script und die Notices sind geschichte.... OHNE php.ini
        gruss Chris

        [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

        Kommentar


        • #5
          Nummer 1 ist aber die bessere Lösung

          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
          Wie man Fragen richtig stellt

          Kommentar

          Lädt...
          X