Werte per $_POST an Funktion übergeben?

preko

Erfahrenes Mitglied
Hi,

sorry, ich habe gerade mein Hirn auf Standby nach dem heutigen Arbeitstag. :-(

Ich habe das Problem, dass ich Werte aus einem Formular per $_POST an eine "includierte" Funktion übergeben muss. Wie mache ich dies / wie ist die korrekte Syntax? :confused:


Beste Grüße,
preko
 
Was willst du genau machen?
Verstehe die Frage nicht ganz.
Aber dazu mal soviel: $_POST ist glaube ich superglobal - kann also auch in Funktionen etc. verwendet werden ohne die Werte wirklich übergeben zu müssen. Ob das sauber ist bezweifle ich aber :)
 
Hää ? $_POST-Variablen sind doch auch ganz normale Variablen ! Ich glaub ich hab dich nicht richtig verstanden oder ? :)

PHP:
$x = foo($_POST['feld'],$_POST['bla']);
 
Eine inkludierte Funktion kannst du sowieso so behandeln, als wenn du sie im "Aufruferfile" hättest. Demnach einfach den Funktionsaufruf gemäss Online-Skaters Post. Oder verstehen wir dein Problem falsch?
 
Ja, so wie das Online-Skater in seinem Beispiel gemacht hat ist das korrekt.

$_POST Variablen sind global, das heisst du kannst innerhalb einer Funktion auf die Werte zugreifen, auch wenn du sie nicht übergibst.

PHP:
function test() {
  echo $_POST['feld'];
}

Aber wie gesagt: Besonders saube finde ich das nicht, war eher zu deiner Information :)
 
Hi,

ich habe eine Anmeldeseite ("form.php") - z. B.:

PHP:
include(class.php);
echo '
          <form action="'.$_SERVER[PHP_SELF].'" method="POST">
          <table cellpadding="2" cellspacing="0" border="0">         
          <tr>
          <td colspan="3" style="width:226; text-align:center; font-weight:bold; color:#FFFFFF; background-color:#FF0000; border-top: 1px solid #C7C7C7; border-left: 1px solid #C7C7C7; border-right: 1px solid #C7C7C7;">Login</td>
          </tr>
          <tr>
          <td style="width:80; text-align:left;  border-left: 1px solid #C7C7C7;">Benutzername</td>
          <td style="width:6; text-align:center;">:</td>
          <td style="width:120; text-align:left;  border-right: 1px solid #C7C7C7;"><input id="user" name="user" type="test" size="15" maxlenght="20"></td>
          </tr>
          <tr>
          <td style="border-left:1px solid #C7C7C7; ">Passwort</td>
          <td>:</td>
          <td style="border-right:1px solid #C7C7C7;"><input id="password" name="password" type="password" size="15" maxlenght="20"></td>
          </tr>
          <tr>
          <td colspan="3" style="height:35px; text-align:center; border-left: 1px solid #C7C7C7; border-right: 1px solid #C7C7C7;  border-bottom: 1px solid #C7C7C7;"><input id="login_flag" name="login_flag" type="hidden" value="1"><input type="submit" value="Anmelden"><input type="reset" value="Löschen"></td>
          </tr></table>
          </form>';
...

und ich habe eine PHP-Seite mit Funktionen ("class.php") welche in die zuvor genannte Seite includiert wird (s. Scriptanfang):

PHP:
Function anmeldung_pruefen() {
     if (isset($_POST['user']) {
     echo "Username lautet: ".htmlentities(strtolower($_POST['user']));
     }
        else {
               echo "Username wurde nicht angegeben!";
               }
}

Mir geht es nun darum wie ich den FORM Tag umgestalten muß (derzeit $_SERVER[PHP_SELF]), damit die Werte in der Funktion verwendet werden können.


Beste Grüße,

preko
 
Das sollte ja kein Problem sein so wie du das gepostet hast.
Du musst in dieser Datei einfach noch irgend ein PHP Block haben, wo du abfängst ob das Formular abgeschickt wurde und dann kannst du die anmeldung_pruefen() Funktion verwenden.
 
Hi,

wichtig ist, die Reihenfolge einzuhalten:

Code:
// deklarieren, definieren
$username = isset($_POST['user']) ? $_POST['user'] : null;
$postaction = isset($_POST['postaction']) ? $_POST['postaction'] : null;

function anmeldung_pruefen($name) {
    if(empty(trim($name)){ // Eingaben trimmen (leerzeichen entfernen)!
        echo "Username leer";
        return false;
    }
    else {
        echo "Username lautet: ".htmlentities(strtolower($name));
        return true;
    }
}  

// funktionen ausführen
if(!empty($postaction)){ // wenn formular gesendet
    if(anmeldung_pruefen($username)){
        echo "Usereingaben OK";
    }
    else {
        echo "Usereingaben NICHT OK";
    }
}

// html
<form action="'.$_SERVER[PHP_SELF].'" method="POST">
          <input id="user" name="user" type="test" size="15" maxlenght="20" value="'.$username.'">
          <input type="hidden" name="postaction" value="login">
          </form>';

Gruß tyg3r
 
Zuletzt bearbeitet:
Zurück