| 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: 12 let
|
|||
0