PHP-Problem (Einstellungssache?)



  • Hallo zusammen!

    Ich hab nach der Anleitung auf www.wamp.de ein kleines "wamp"
    eingerichtet. Ich verwende:

    - Apache 1.3.6
    - PHP 4.0.4
    - MySQL 3.23.22

    Mein Problem zeige ich am besten anhand eines Beispiels...hier der Code:

    <html>
    <head>
    <title>Test</title>
    </head>
    <body>
    <form method="post" action="<? $PHP_SELF ?>">
    <?php
    if(isset($a))
    echo "$a";
    else
    echo "<input type=\"text\" name=\"a\" maxlength=\"10\"><br>";
    echo "<input type=\"submit\" value=\"Absenden\">;
    ?>
    </form>
    </body>
    </html>
    

    Wenn ich diese Seite Aufrufe bekomme ich also ein Eingabefeld und nen Button.
    Ich trage was ins Eingabefeld ein, drücke den Button, und siehe da:
    Ich sehe wieder nur das leere Eingabefeld und den Button. Irgendwie werden bei
    mir die Werte (in diesem Fall $a) nicht übergeben. Aber in der Adress-Leiste vom Explorer steht sowas wie: http://localhost/test1.php3?a=123
    also werden die Werte mit der URL übergeben...

    Was mach ich falsch? Hab ich evtl. den Webserver mit PHP falsch eingerichtet?
    Aber der Rest klappt ja...

    Ich sag schonmal Danke!

    Gruß,

    Stefan



  • mir fallen primär nur 2 sachen auf:
    - du verwendest einmal den <? ?> tag, der nicht umbedingt standardmäßig angeschaltet ist (config checken)
    - kuck mal:

    <?php
    if(isset($a))
        echo "$a";
    else
        echo "<input type=\"text\" name=\"a\" maxlength=\"10\"><br>";
    
    echo "<input type=\"submit\" value=\"Absenden\">;
    ?>
    

    bei dir wird in jedem fall das 2. echo ausgeführt. willst du diese beiden echos nach dem else nur haben, wenn der else-fall eintritt, musst du ne geschweifte klammer drum rum machen.

    des weiteren solltest du um die ausgabe z.b. <p> tags machen, damits ne standardkonforme seite wird 🙂



  • im normalfalle steht bei einem formfeld nix von den variablen in der adressleiste. mein ich jedenfalls.
    Ausserdem wird bei dir jedes mal, egal ob a gesetzt ist oder nicht, der absendebutton angezeigt..

    es sollte so aussehn:

    if(/*anweisung*/)
    {
    //code
    }
    else
    {
    //code
    }

    und desweiteren solltest du anstatt des <? ?> tags den hier benutzen:
    <?php
    //code
    ?>

    Sonst fällt mir nix mehr ein was es noch sein könnte

    mfg

    [Edtit] Oh mann, da war der korb aber schneller als ich *hmpf* [/Edit]

    [ Dieser Beitrag wurde am 14.05.2003 um 10:16 Uhr von mrchat editiert. ]



  • Hallo!

    Ich habe jetzt das "<? $PHP_SELF ?>" durch "test1.php3" ersetzt
    und auch die geschweiften Klammern gesetzt...

    Leider klappt es immer noch nicht... 😞

    Irgendwie bekommt er einfach nicht mit das die Variable $a gesetzt ist.
    Schön dumm wenn man sich ne Testumgebung einrichtet und da nichts läuft!

    Bin für jeden weiteren Tipp dankbar!

    Gruß,

    Stefan 🙂



  • 1. Wenn du dein Formular mit method="post" verschickst dürftest du eigentlich nichts von ?a=bla in der URI sehen (ist nur bei method="get" der Fall)
    2. In der php.ini ist in neuerern Versionen register_globals standartmäßig auf off (ist dafür verantwortlich, dass du auf die Variablen direkt per $a zugreifen kannst.

    Lösung: $_POST, _GET(\_GET (_REQUEST) (ab PHP > 4.1.0 - autoglobal - zu empfehlende Variante) bzw. $HTTP_POST_VARS, $HTTP_GET_VARS sind Arrays, über die du auf die übergebenen Formular bzw. URI-Daten zugreifen kannst. In deinem Falls also $_POST['a'] 🙂


Anmelden zum Antworten