PHP Variablen werden nicht weiter gegeben?

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von chrigu, 09.05.2004.

  1. chrigu

    chrigu Thread Starter MacUser Mitglied

    Beiträge:
    155
    Zustimmungen:
    0
    MacUser seit:
    08.03.2004
    Erlerne gerade den Umgang mit PHP und den Formularen, leider will es noch nicht so richtig, denn die Variablen werden scheinbar nicht ausgelesen.

    //Ich habe hier mal als Beispiel das Formular:

    PHP:
    <html>
    <
    body>
    Bitte tragen Sie zwei Zahlen einund senden Sie das Formular ab:<br>
    <
    form action="ud01.php" method="get">
    <
    pWert 1: <input name="w1"></p>
    <
    pWert 2: <input name="w2"></p>
    <
    p><input type="submit"><input type="reset"></p>
    </
    form>
    </
    body>
    </
    html>
    // Das an die entsprechende PHP Seite: ud01.php weitergeleitet wird:

    PHP:
    <html>
    <body>
    <?php
        $erg 
    $_GET['$w1'] + $_GET['$w2'];
        echo 
    "Die Summe von " $_GET['$w1'] . " und " $_GET['$w2'] . " ist $erg";
    ?>
    </body>
    </html>
    // Ich erhalte dann als Ergebnis:

    <html>
    <body>
    Die Summe von und ist 0
    </body>
    </html>

    Kann mir jemand sagen wo hier der Wurm drin steckt?
    Danke im voraus!
     
    Zuletzt bearbeitet: 09.05.2004
  2. adi1981

    adi1981 MacUser Mitglied

    Beiträge:
    210
    Zustimmungen:
    1
    MacUser seit:
    18.03.2003
    kein problem:

    das zweite file muss so aussehen:

    <html>
    <body>
    <?php
    $erg = $w1+$w2;
    echo "Die Summe von $w1 und $w2 ist $erg";
    ?>
    </body>
    </html>
     
  3. sevY

    sevY Gast

    @adi:

    Hä? Unfug… ;)
    Wenn die Globals Off sind, so wie es ab PHP5 standard ist, dann klappt das nicht. Außerdem ist das auch unsicher so.

    @chrigu

    Ersteinmal… warum übergibst du aus einem Formular mit GET? Mach das lieber mit POST.

    Ich poste dir mal einen Auszug aus einem CMS, das ich gerade bastel, da kannst du sehen wie die Vars mit POST sicher übergeben werden.

    PHP:
    <?php
    require_once('config.inc.php');
    require_once(
    'function.inc.php');
    $date=date('Y.m.d');
    echo
    '
        <html>
        <head>
        <meta http-equiv="content-type" content="text/html;charset=iso-8859-1"> 
        <meta http-equiv="expires" content="0">
        <meta http-equiv="pragma" content="no-cache">
        <meta name="robots" content="noindex,nofollow"> 
        <meta name="author" content="Olaf Beitzel, Yves Vogl">
        <link rel="stylesheet" type="text/css" href="default.css">
        <link rel="shortcut icon" href="img/'
    .$favicon[7].'">
        <title>Content Management System</title>
        </head>
        '
    ;
    $get_colours=mysql_query("Select hexcode from $db_tab_colours where id='$_POST[colour_id]'",$handler);
    $colours=mysql_fetch_array($get_colours);
    $replace_new=new replace();
    $replace_new->replace_hexcode(&$colours['hexcode']);
    unset(
    $replace_new);
    echo
    '
        <body bgcolor="'
    .$colours['hexcode'].'">
        '
    ;
    if(
    $_POST['action']=='insert')
        {
        
    mysql_db_query($db_dbase,"insert into $db_tab (root_id,date,name) VALUES ('$_POST[root_id]','$date','$_POST[name]')");
        echo
    "<meta http-equiv=refresh content=\"0; URL=level0.php\">";
        }  
    else
        {
        echo
    '
            <form action="'
    .$_SERVER['PHP_SELF'].'" method="post">
                <input type="hidden" name="action" value="insert">
                <input type="hidden" name="root_id" value="'
    .$_POST['root_id'].'">
                <input type="text" name="name" value="name"><br>
                <input type="submit" value="Insert">
            </form>
            '
    ;
        }
    ?>
    </body>
    </html>
     
  4. chrigu

    chrigu Thread Starter MacUser Mitglied

    Beiträge:
    155
    Zustimmungen:
    0
    MacUser seit:
    08.03.2004
    @aldi1981

    Leider habe ich das auch schon probiert, aber das geht nur wenn die register_globals in der php.ini auf "on" sind, so viel ich jedenfalls weiss. Nun, wegen dieser angeblichen Sicherheitslücke will ich die auf "off" haben.

    Ich habe in der FAQ gelesen, dass man die Variablen $w1 und $w2 in $_GET['w1'] oder $_POST['w1'] umändern sollte, doch hier habe ich Mühe, weil das doch so funktionieren sollte und es eben nicht tut. Ich werde die Vermutung nicht los, dass in meinem Script irdendwo ein Bug liegt.

    Wer hat heute Adleraugen?
     
  5. sevY

    sevY Gast

    Aufs einfachste reduziert…

    So sieht das Formular aus
    PHP:


            <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
                <input type="text" name="value1"><br>
                input type="text" name="value2"><br>

                <input type="submit" value="Calculate">
            </form>


    Die Variablen stehen dann als $_POST['value1'] und $_POST['value2'] nach Submitting des Formulars zur Verfügung.


    Wenn du trotzdem mit GET arbeiten möchtest, kannst du das tun. Aber ich finde das unüblich und nicht sehr sinnig.

    Zur Not kannst du übrigens mit $_REQUEST['varname']; an die entsprechenden Variablen wenn du dir nicht sicher bist, ob diese mit POST oder GET überliefert wurden.

    Liebe Grüße


    Yves
     
  6. sevY

    sevY Gast

    Hier, so funktioniert dein Script (hab das mal alles auf seine PHP Datei gecodet).

    PHP:
    <html>
    <body>
    <?php
    if(isset($_POST['action']))
        {
        
    $result=$_POST['value_1']+$_POST['value_2'];
        echo 
    'Die Summe von '.$_POST['value_1'].' und '.$_POST['value_2'].' ist '.$result.'<p><a href="'.$_SERVER['PHP_SELF'].'" target="_self">Zur&uuml;ck</a>';
        }
    else
        {
        echo
    '
            <form action="'
    .$_SERVER['PHP_SELF'].'" method="post">
                <input type="hidden" name="action" value="calc">
                <input type="text" name="value_1" value="Wert1"><br>
                <input type="text" name="value_2" value="Wert2"><br>
                <input type="submit">
            </form>
            '
    ;
        }
    ?>
    </body>
    </html>

    Liebe Grüße

    Yves
     
  7. chrigu

    chrigu Thread Starter MacUser Mitglied

    Beiträge:
    155
    Zustimmungen:
    0
    MacUser seit:
    08.03.2004
    uups, das geht für mich ein bisschen zu schnell, da ich am Grundlagen erlernen bin, aber danke für deine Hilfe.

    Das letzte Beispiel ist für mich noch zu weit weg von meinem können, es scheint das du Formular und "Rechner" in einer Seite verpackt hast, das ist sicher komfortabler.

    Wie müsste ich es aber machen, dass die Werte im ersten File mit dem Formular ud01.htm nach ud01.php übergeben werden? Das
    PHP:
    <form action="<?php_echo_$_SERVER['PHP_SELF'];_?>" method="post">
    hast du mir bereits gegeben, nur wird die Seite mit dem "rechner" ud01.php nicht aufgerufen, was müsste ich da noch ändern?

    Gruss Chrigu
     
  8. sevY

    sevY Gast

    Hi,

    das Action-Parameter in einem HTML Formular gibt die Seite an, die aufgerufen werden soll.

    Das
    PHP:
    <?php_echo_$_SERVER['PHP_SELF'];_?>
    verweist quasi nur auf die gleiche Seite, auf der es definiert wurde.


    Wenn du nun die Seite „ergebnis.php“ aufrufen möchtest, dann musst du einfach nur im Formular die entsprechende Seite als Action Parameter angeben.

    Also

    PHP:
    <form action="ergebnis.php" method="post">
    Alles klar?


    Liebe Grüße

    Yves
     
  9. chrigu

    chrigu Thread Starter MacUser Mitglied

    Beiträge:
    155
    Zustimmungen:
    0
    MacUser seit:
    08.03.2004
    Soweit alles klar, nur das es einfach nicht funktioneren will ;-)

    Ich komme immer wieder zum gleichen Ergebnis wie am Anfang:

    Hast du einen Fehler gefunden in meinen zwei ersten Files, wo du sagen könntest das es darum nicht funktioniert?

    Gruss Chrigu
     
  10. sunni

    sunni MacUser Mitglied

    Beiträge:
    761
    Zustimmungen:
    0
    MacUser seit:
    06.03.2002
    &nbsp;
    also ich glaub, daß ganze könnt schon funktionieren. wenn du anstatt $_GET['$w1'], $_GET['w1'] schreiben würdest. weil $_GET weiß ja, daß es sich um eine variable handelt, die du auslesen willst.
    Oder wenn du dein Forumlar mit post betreibst, dann nimmst halt $_POST['w1']

    hoffentlich funzt das jetzt auch :rolleyes:
     
Die Seite wird geladen...
Ähnliche Themen - PHP Variablen werden
  1. alex1000
    Antworten:
    5
    Aufrufe:
    159
    pmau
    26.08.2016
  2. apstalker
    Antworten:
    3
    Aufrufe:
    592
    apstalker
    12.12.2012
  3. phikus
    Antworten:
    23
    Aufrufe:
    5.004
    wegus
    17.08.2006
  4. produnis
    Antworten:
    2
    Aufrufe:
    871
    wegus
    12.01.2006
  5. jouno
    Antworten:
    2
    Aufrufe:
    1.024
    jouno
    15.03.2004