2016-11-06 1 views
-2

Ich habe diesen PHP-Code mit einer Datenbank verbunden ist, und ich brauche hier eine vollständige E-Mail und den Namen Validierung auf diesem Code Basis zu machen, wie kann ich das tun, weil mein Code hat einige Probleme hierkomplette Formularvalidierung in PHP

1) Name Schlüssel nicht (//) oder irgendwelche Symbole, um ein richtiger Name zu sein

2) E-Mail-Schlüssel ist eine gültige E-Mail, weil was wir hier nur sicherstellen, dass es @ -Symbol und wenn ich die E-Mail eingeben [email protected] oder auch ohne (.com) wird es auch gültig sein? !!

if(array_key_exists("submit",$_POST)){ 
    $link = mysqli_connect("localhost","root","123456789","users"); 

    if(mysqli_connect_error()){ 
    die("There is a problem in connecting to database"); 
    } 

    if(!$_POST['name']){ 
    $error .="<p>Your Full name is required</p><br>"; 
    } 

    if(!$_POST['email']){ 
    $error .="<p>Your email address is required</p><br>"; 
    } 

    if(!$_POST['password']){ 
    $error .="<p>Your password is required</p><br>"; 
    } 

    if($error !=""){ 
    $error = "<p>There were errors in your form</p><br>".$error; 
    } 
} 
+0

Verlinken Sie keine externen Seiten mit Code. Fügen Sie den Code hier ein. Und bitte umformuliere/schreibe deine Fragen neu, weil sie in ihrer aktuellen Form absolut keinen Sinn machen. – junkfoodjunkie

+0

Ich habe gerade die Formularvalidierung gestellt, die ich benutzt habe –

+0

Willst du wissen WIE du sicherstellen kannst, dass der Name und die Email nicht ungültig sind Zeichen, und dass die E-Mail eine gültige E-Mail ist? Ist es das, was du fragst? – junkfoodjunkie

Antwort

0

Sie können diese Funktion für die Validierung verwenden:

function filtervariable($string,$type,$method) { 
    //function for sanitizing variables using PHPs built-in filter methods 
    $validEmail = false; 

    if ($method == 'sanitize') { 
     $filtermethod = 'FILTER_SANITIZE_'; 
    } elseif ($method == 'validate') { 
     $filtermethod = 'FILTER_VALIDATE_'; 
    } else { 
     return; 
    } 
    switch ($type) { 
     case 'email': 
     case 'string': 
     case 'number_int': 
     case 'int': 
     case 'special_chars': 
     case 'url': 
     $filtertype = $filtermethod.strtoupper($type); 
     break; 
    } 

    if ($filtertype == 'FILTER_VALIDATE_EMAIL' && !empty($string)) { 
     list($local,$domain) = explode('@',$string); 

     $localLength = strlen($local); 
     $domainLength = strlen($domain); 

     $checkLocal = explode('.',$domain); 

     if (($localLength > 0 && $localLength < 65) && ($domainLength > 3 && $domainLength < 256) && (checkdnsrr($domain,'MX') || checkdnsrr($domain,'A') || ($checkLocal[1] == 'loc' || $checkLocal[1] == 'dev' || $checkLocal[1] == 'srv'))) { // check for "loc, dev, srv" added to cater for specific problems with local setups 
      $validEmail = true; 
     } else { 
      $validEmail = false; 
     } 
    } 
    if (($filtertype == 'FILTER_VALIDATE_EMAIL' && $validEmail) || $filtertype != 'FILTER_VALIDATE_EMAIL') { 
     return filter_var($string, constant($filtertype)); 
    } else { 
     return false; 
    } 
} 

Und es wie folgt verwenden: $email = filtervariable($registeremail,'email','validate');

Es wird wieder "true" auf Erfolg und "false" ein Fehler auftrat.

+0

Bitte können Sie Ihre Antwort erklären? –

+0

Sehr geehrte junkfoodjunkie, Sie meinen, dass ich diese Funktion irgendwo in dieser Mine PHP-Code setzen kann?! sollte ich auch verwenden $ email = filtervariable ($ registeremail, 'email', 'validate'); wie du es getan hast oder $ _POST ['email'] = filtervariable ($ registeremail, 'email', 'validate'); –

+0

Sie können die Funktion entweder unten in der obigen PHP-Datei oder in einer mitgelieferten Datei mit PHP-Funktionen platzieren, solange sie in der Datei verfügbar ist, in der Sie die Validierung durchführen. Und Sie sollten wirklich ein paar grundlegende PHP-Tutorials lesen. – junkfoodjunkie