• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Validirung PHP Fromulare

umar420

Neues Mitglied
Hallo,

Ich bin neu in php bereich und vorallem in oop. Ich habe eine validirung gebaut, aber die fehler zeigt er direkt, ohne das ich noch in felder was eingetragen habe. Wo mache ich eine fehler ? Ich habe versucht zu google aber erfolglos.Über eine hilfe wäre ich sehr dankbar. Und noch eine bitte habe ich, könnt ihr mir ein buch nenen zu php oop die auch gut ist in suchmaschine finde ich einige aber ich weis nicht welche davon gut ist.


PHP:
class Valiedirung {

    private $username;
    private $password;
    Private $email ;
    private $fehler = '';

    public function pruefen($username, $password, $email) {
        if (isset($username) && $username != '') {

            $this->username = trim($username);

        }else {

            $this->fehler .= '<p id="test">Username angeben!</p><br/>';
           
       }

        if (isset($password) && $password != '') {

            $this->password = trim($password);


        }else {

                $this->fehler .= '<p id="test">Password angeben!</p><br/>';
            
        }        

        if (isset($email) && $email != '') {

            $this->email = trim($email);

        } else {

                $this->fehler .= '<p id="test">email angeben!</p><br/>';
            
        }

        if ($this->fehler != '') {

            echo $this->fehler;
            
        } else {

     require_once 'DEBconnection.php';
        }
    }

}

            



$check = new Valiedirung();
$check->pruefen($_POST ['username'],$_POST ['password'],$_POST ['email']);
 
Ich bin mir erstmal nicht sicher, ob die Leerzeichen in

PHP:
$_POST ["username"]

gut sind. Nimm die mal raus.

Dann solltest Du den Aufruf der Funktion abhängig davon machen, ob die Seite per POST abgeschickt wurde. Also:

PHP:
if( isset($_POST) ) {
 $check = new Valiedirung();
 $check->pruefen($_POST ['username'],$_POST ['password'],$_POST ['email']);  
}
 
Danke für den tip mit der post abzuschicken daruf bin ich net gekommen. Aber mein problem ist weiterhin so wie es war. Ich würde gerne teste webseite zeigen wo ich zu bisien versuche zu arbeiten:

link: LOGIN

wenn du die seite lattest wird du sehen ohne was felder zu füllen kommen die fehlermeldungen.
 
wenn du die seite lattest wird du sehen ohne was felder zu füllen kommen die fehlermeldungen.

Weil dein Script bereits ausgeführt wird, bevor der Besucher die Möglichkeit hat, Daten einzugeben.

Das lässt sich mit einer if(isset($_POST)) Abfrage vermeiden. Wobei if(!empty($_POST)) oder schlicht if($_POST) hier wahrscheinlich auch zum Ziel führen würden.

Entweder in der Form, wie Threadi es beschrieben hat, oder du stellst es alternativ dazu an den Anfang deiner Funktion.
 
Gesetzt (isset) ist $_POST übrigens immer.

PHP:
<?php

foreach (get_defined_vars() as $k => $v) {
    printf("$%s<br>\n", $k);
}

Code:
$GLOBALS
$_POST
$_GET
$_COOKIE
$_FILES
$_ENV
$_REQUEST
$_SERVER

Bei Aufruf über Kommandozeile zusätzlich noch:

Code:
$argv
$argc
 
Die meisten Leute werden das Script vermutlich im Browser ausführen und nicht über die Kommandozeile. Und da der Browser/Server sowas standardmäßig als HTML interpretiert/ausliefert, wenn der Header nicht überschrieben wird, braucht's für sichtbare Zeilenumbrüche eben sowas wie br.

Was du mit „literal ausgewertet“ an der Stelle meinst, ist mir nicht ganz klar.
 
Was du mit „literal ausgewertet“ an der Stelle meinst, ist mir nicht ganz klar.

Das war von mir auch etwas missverständlich formuliert. Hätte literal (wörtlich) ausgegeben heißen sollen. Ich bin über die Schreibweise gestolpert, bei printf() ein HTML-Element in das Funktionsargument einzubauen. Habe das so noch nie geschrieben.
 
Zurück
Oben