2016-07-10 14 views
0

Im Moment habe ich diesen Code, unter dem nur Benutzername Länge überprüft. Wenn keine Eingabe erfolgt, wird eine Fehlermeldung angezeigt, wenn weniger als 3 Zeichen eingegeben wurden, wird eine Fehlermeldung angezeigt. Ich mag eine if/else Erklärung hinzufügen, dass, wenn die Benutzer Sonderzeichen eingibt wie [email protected]#$%^&*()+=/? etc ... das einzige Sonderzeichen erlaubt ist, ist Strich (_) und Bindestrich (-) ... Helfen Sie mir, wie.ungültig, wenn Sonderzeichen eingegeben

dank

hier ist der Code, den ich habe:

<?php 
$serror=""; 
if (isset($_POST['submit'])) {    
    $username=$_POST['username']; 
    $lengt = strlen($username); 

    if($lengt == 0){ 
     $serror=" Please enter account username "; 
    } 
    else{ 
     if($lengt < 3){    
      $serror=" Please enter valid account username "; 
     } 
    } 
    if($serror==""){ 
     ob_start(); 
     echo "Success"; 
     header("Location:progress.php?username=$username"); 
     exit; 
     ob_end_flush(); 
    } 
    else{}    
} 
?> 
+0

Sie einen regulären Ausdruck unerwünschte Zeichen erkennen, verwenden können oder dürfen nur Zeichen erlauben – CodeToad

Antwort

0

Verwendung preg_match() function

$yourString = "blahblah"; 
if (preg_match('/^[A-Za-z0-9_-]*$/', $yourString)) { 
    #your string is good 
} 

remeber preg_match() kehrt

+0

Das sollte funktionieren. Dieses Muster sollte auch funktionieren: '/^([\ w \ -] +) $ /' –

0

Ihr PHP-Skript boolean arbeitet, nachdem der Benutzer das Formular abschickt. Von Ihren Tags in der Frage nehme ich an, dass Sie Javascript verwenden können. Mit Javascript fangen Sie diese Fehler ab, bevor das Formular abgeschickt wird.

Also würde Ihr HTML-Eingabefeld ein Skript auslösen und Sie können das onkeypress-Ereignis verwenden, um den Wert des Tastendrucks zu sehen.

Die Schaltfläche senden würde auch ein Javascript-Ereignis nach min string length suchen, geben Sie sonst warning und nicht Formular absenden.

+0

Das ist richtig, aber Sie sollten immer auch eine Validierung im Backend haben. Menschen sind böse und JS kann manipuliert werden. –

+1

sehr sehr wahr. Aber da sein Header die 'GET'-Methode für den Benutzernamen verwendet, dachte ich, dass Sicherheit nicht oberste Priorität hat. – bluepinto

+0

Oh Schnapp! Ich habe das verpasst! –

0

Wie andere bereits erwähnt, sollten Sie reguläre Ausdrücke für diese.

mit der folgenden if-Anweisung Versuchen (erlaubt a-z, Zahlen, Unterstrichen und Bindestrichen). Es überprüft auch, dass die Länge mindestens 3 Zeichen lang ist:

if (!preg_match("/^([\w\-]{3,})$/", $username)) { 
    $error = "Not enough chars or there are invalid ones". 
} 

Lesen Sie mehr über preg_match() here

+0

oh schau deins auch nicht! https://regex101.com/r/tE1oS2/3 –

+0

@RachelGallen - Haben Sie das Ausrufezeichen '' vor 'preg_match()'!? –

+0

Wenn es in erster Linie kein Spiel findet, wird es keinen Unterschied machen! - es sagt keine Übereinstimmung –

Verwandte Themen