Autor Zpráva
_fantomas
Profil
Ahoj, spravil som si registračný skript no neviem tam pridať aby meno mohlo obsahovať len znaky

od A po Z
od 1-9

potrebujem povoliť len tieto znaky žiadné "ščľščš%@# atd..."
Vedel by mi niekto s tim pomôcť?

<?    
   if(isset($_POST['odoslat']))
   {  
      $mysqli = null;
    
      $meno = preg_replace('/\s+/', '', $_POST['meno']);
      $heslo = $_POST['heslo'];
      $heslo2 = $_POST['heslo2'];
      $email = $_POST['email'];
      
      $errors = '';
      
      if(empty($meno) || empty($heslo) || empty($heslo2) || empty($email))
      {
        $errors .= "Musíte vyplniť všetky polia.";
      }
      else if(strcmp($heslo,$heslo2))
      {
        $errors .= "Zadané hesla sa nezhodujú.";  
      }
      else if(!filter_var($email, FILTER_VALIDATE_EMAIL))
      {
        $errors .= "Zadaný E-Mail je nesprávný.";
      }
      else 
      {
       $mysqli = new MySQLI("****", "****", "****", "****");
       $meno = stripslashes($mysqli->real_escape_string($meno));
       $heslo = md5(stripslashes($mysqli->real_escape_string($heslo)));
       $email = stripslashes($mysqli->real_escape_string($email));
       
       $vysledok = $mysqli->query("SELECT * FROM uzivatelia WHERE username='{$meno}'");
       if($vysledok->num_rows)
       {
         $errors .= "Uživateľ so zadaným menom už existuje.";
         $vysledok->free();
         $mysqli->close();
        }
      }    
      if(empty($errors))
      {
      $mysqli->query("INSERT INTO `uzivatelia` (`username`, `password`, `email`) VALUES ('{$meno}', '{$heslo}', '{$email}')");
      if($mysqli->affected_rows)
          echo '<p style="color: green; text-align: center;">Uživateľ <span style="color: #1991DB; font-weight: bold; text-decoration:underline;">'.$meno.'</span> bol úspešne zaregistrovaný.<br />Teraz sa môžeš prihlásiť</p>';
      else 
          echo 'Nastala chyba!!';
          $mysqli->close();
      }
      else 
      {
          echo '<p style="color: red; text-align: center;">Nastala chyba: '.$errors.'</p>';
      }
        
    }    
  ?>

  <form style="text-align: center;" action="" method="post">
       <label for="meno"></label>
       <input style="margin-top: 20px;" class="textbox" type="text" placeholder="Uživateľské meno" id="meno" name="meno" size="24" /><br />
       <label for="heslo"></label>
       <input style="margin-top: 15px;" class="textbox" type="password" placeholder="Heslo" id="heslo" name="heslo" size="24" /><br />
       <label for="heslo2"></label>
       <input style="margin-top: 15px;" class="textbox" type="password" placeholder="Heslo znovu" id="heslo2" name="heslo2" size="24" /><br />
       <label for="email"></label>
       <input style="margin-top: 15px;" class="textbox" type="text" placeholder="Váš E-Mail" id="email" name="email" size="24" /><br />
       <input style="padding: 0px; margin-top: 0px;" class="default" type="submit" name="odoslat" value="Registrovať" />      
  </form>
Joker
Profil
_fantomas:
\s jsou jen bílé znaky. Alfanumerické jsou \w, všechny ostatní se dají získat přes negaci.
Takže: /[^\w]+/ by mělo nahradit nealfanumerické znaky.
_fantomas
Profil
$meno = preg_replace('/\s+/[^\w]+/', '', $_POST['meno']);

Asi to tam zapisujem zle ale ked to tam dám skript nefunguje správne... ako to tam teda mam dať?
Joker
Profil
_fantomas:
Asi to tam zapisujem zle
Ano. Má to být jen /[^\w]+/, jak jsem psal.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: