Autor | Zpráva | ||
---|---|---|---|
_fantomas Profil |
#1 · Zasláno: 2. 5. 2014, 14:31:34
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 |
#2 · Zasláno: 2. 5. 2014, 14:47:53
_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 |
#3 · Zasláno: 2. 5. 2014, 15:03:41
$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 |
#4 · Zasláno: 2. 5. 2014, 15:05:18
_fantomas:
„Asi to tam zapisujem zle“ Ano. Má to být jen /[^\w]+/ , jak jsem psal.
|
||
Časová prodleva: 10 let
|
0