Забраняване на символи при регистрация.

WildBeast

Registered
Как да забраня регистрация на потребител, съдържащ следните символи:
< > { } [ ] ( ) * & ^ % $ # @ ! ~...??

+1
 
Ако искаш потр. име да се състои само от букви и цифри:
Код:
<?php
$name = "asd^asd";
if(preg_match("|[a-z0-9]+|i", $name)) {
echo "OK";
} else {
echo "not OK";
}
?>
 
Така?

if (empty($_POST["user"]) or strlen($_POST["user"])<=5) { $errMsg = "Псевдонима, който сте въвели е прекалено кратък или не сте въвели такъв."; }
if(preg_match("|[a-z0-9]+|i", $user)) {
echo "OK";
} else {
echo "Псевдонима, който сте въвели съдържа забранени символи!";
}
elseif (strlen($_POST["user"])>=5) { $user = htmlspecialchars($_POST["user"]); }
 
<?php
$queryString = strtolower($_SERVER['QUERY_STRING']);

if (strstr($queryString,"<") OR strstr($queryString,">") OR strstr($queryString,"(") OR strstr($queryString,")") OR
strstr($queryString,"..") OR
strstr($queryString,"%") OR
strstr($queryString,"*") OR
strstr($queryString,"+") OR
strstr($queryString,"!") OR
strstr($queryString,"@")) {
$loc = $_SERVER['PHP_SELF'];
$ip = $_SERVER['REMOTE_ADDR'];
$date = date ("d-m-Y @ h:i:s");
$lfh = "log.txt";
$log = fopen ( $lfh,"a+" );
fputs ($log, "Attack Date: $date | Attacker IP: $ip | QueryString: $loc?=$queryString\n");
fclose($log);
echo "Вашата атака беше записана!";
}
?>
 
<?php
$queryString = strtolower($_SERVER['QUERY_STRING']);

if (strstr($queryString,"<") OR strstr($queryString,">") OR strstr($queryString,"(") OR strstr($queryString,")") OR
strstr($queryString,"..") OR
strstr($queryString,"%") OR
strstr($queryString,"*") OR
strstr($queryString,"+") OR
strstr($queryString,"!") OR
strstr($queryString,"@")) {
$loc = $_SERVER['PHP_SELF'];
$ip = $_SERVER['REMOTE_ADDR'];
$date = date ("d-m-Y @ h:i:s");
$lfh = "log.txt";
$log = fopen ( $lfh,"a+" );
fputs ($log, "Attack Date: $date | Attacker IP: $ip | QueryString: $loc?=$queryString\n");
fclose($log);
echo "Вашата атака беше записана!";
}
?>

Това е съвсем различно от това дето ми трябва :). Ти ми даваш защита против XSS, която имам, а не забрана за регистрация на потребител с такива символи.
 
Код:
<?php
$user = "asd^asd";
if(preg_match("|[a-z0-9]{5,}|i", $user)) {
echo "OK";
} else {
echo "Псевдонима, който сте въвели съдържа забранени символи, или е тврде кратък!";
}
?>

:?:
 
Не мога да се справя :X ето кода:

<?php require("style1.php"); ?>
<table width="100%" cellspacing="0" cellpadding="0">
<tr><td><img src="../images/adb-home.png" border="0" /></td></tr>
<tr><td background="../images/adb-cont.png" align="center">
<?php
if (isset($_POST["submit"])) { include ("connect.php"); }
if (empty($_POST["user"]) or strlen($_POST["user"])<=5) { $errMsg = "Псевдонима, който сте въвели е прекалено кратък или не сте въвели такъв."; }
elseif (strlen($_POST["user"])>=5) { $user = htmlspecialchars($_POST["user"]); }
if (empty($_POST["pass"]) or strlen($_POST["pass"])<=6) { $errMsg = "Паролата, която сте въвели е прекалено кратка или не сте въвели такава."; }
elseif (strlen($_POST["pass"])>=6) { $pass = htmlspecialchars($_POST["pass"]); }
if (empty($_POST["mail"])) { $errMsg = "Моля въведете е-майл!"; }
elseif (!empty($_POST["mail"])) { $mail = htmlspecialchars($_POST["mail"]); }
if (!strstr($mail,"@") || !strstr($mail,".")) { $errMsg = "Грешен e-mail адрес"; }
if (empty($_POST["captcha"])) { $errMsg = "Не сте въвели полето против ботове!"; }
elseif (!empty($_POST["captcha"])){ $captcha = htmlspecialchars($_POST["captcha"]); }
if(!empty($_POST['skype']) or $_POST["skype"]>=3) { $skype = htmlspecialchars($_POST["skype"]); }
else { $skype = "Нямам Skype.";}
if(!empty($_POST['avatar']) or $_POST["avatar"]) { $avatar = htmlspecialchars($_POST["avatar"]); }
else { $avatar = "../images/noavatar.png";}
if(!empty($_POST['sub']) or $_POST["sub"]) { $sub = htmlspecialchars($_POST["sub"]); }
else { $sub = "Нямам представяне.";}
if(!empty($_POST['icq']) or $_POST["icq"]) { $icq = htmlspecialchars($_POST["icq"]); }
else { $icq = "Нямам ICQ.";}
if(!empty($_POST['rajdane']) or $_POST["rajdane"]) { $rajdane = htmlspecialchars($_POST["rajdane"]); }
else { $rajdane = "Не казвам!";}

if (empty($errMsg)) {
$chek = mysql_query("SELECT * FROM `members` WHERE `user`='$user'")or die(mysql_error());
$chek = mysql_num_rows($chek);
if ($chek=='1') { echo 'Този потребител вече е регистриран! <a href="registration.php">Назад!</a>'; }
else {
$insert = mysql_query("INSERT INTO members(user, pass, mail, skype, ip, avatar, rajdane, icq, sub) VALUES('$user', '$pass', '$mail', '$skype', '$ip', '$avatar', '$rajdane', '$icq', '$sub')")or die(mysql_error());
echo 'Здравей, <b>' . $user . '</b>! Регистрацията е успешна! Може да влезеш от <a href="index.php">ТУК</a>'; }}
else { echo $errMsg; }
?></td></tr>
<tr><td><img src="../images/adb-down.png" border="0" /></td></tr>
</table>
<?php require("style2.php"); ?>
 
Код:
<?php require("style1.php"); ?>
<table width="100%" cellspacing="0" cellpadding="0">
<tr><td><img src="../images/adb-home.png" border="0" /></td></tr>
<tr><td background="../images/adb-cont.png" align="center">
<?php
if (isset($_POST["submit"])) { include ("connect.php"); }
if (empty($_POST["user"]) or strlen($_POST["user"])<=5) { $errMsg = "Псевдонима, който сте въвели е прекалено кратък или не сте въвели такъв."; }
elseif (strlen($_POST["user"])>=5) { $user = htmlspecialchars($_POST["user"]); }
if (empty($_POST["pass"]) or strlen($_POST["pass"])<=6) { $errMsg = "Паролата, която сте въвели е прекалено кратка или не сте въвели такава."; }
elseif (strlen($_POST["pass"])>=6) { $pass = htmlspecialchars($_POST["pass"]); }
if (empty($_POST["mail"])) { $errMsg = "Моля въведете е-майл!"; }
elseif (!empty($_POST["mail"])) { $mail = htmlspecialchars($_POST["mail"]); }
if (!strstr($mail,"@") || !strstr($mail,".")) { $errMsg = "Грешен e-mail адрес"; }
if (empty($_POST["captcha"])) { $errMsg = "Не сте въвели полето против ботове!"; }
elseif (!empty($_POST["captcha"])){ $captcha = htmlspecialchars($_POST["captcha"]); }
if(!empty($_POST['skype']) or $_POST["skype"]>=3) { $skype = htmlspecialchars($_POST["skype"]); }
else { $skype = "Нямам Skype.";}
if(!empty($_POST['avatar']) or $_POST["avatar"]) { $avatar = htmlspecialchars($_POST["avatar"]); }
else { $avatar = "../images/noavatar.png";}
if(!empty($_POST['sub']) or $_POST["sub"]) { $sub = htmlspecialchars($_POST["sub"]); }
else { $sub = "Нямам представяне.";}
if(!empty($_POST['icq']) or $_POST["icq"]) { $icq = htmlspecialchars($_POST["icq"]); }
else { $icq = "Нямам ICQ.";}
if(!empty($_POST['rajdane']) or $_POST["rajdane"]) { $rajdane = htmlspecialchars($_POST["rajdane"]); }
else { $rajdane = "Не казвам!";}

if (empty($errMsg)) {
$chek = mysql_query("SELECT * FROM `members` WHERE `user`='$user'")or die(mysql_error());
$chek = mysql_num_rows($chek);
if ($chek=='1') { echo 'Този потребител вече е регистриран! <a href="registration.php">Назад!</a>'; }
else {
if(preg_match("|[a-z0-9]{5,}|i", $user)) { 
$insert = mysql_query("INSERT INTO members(user, pass, mail, skype, ip, avatar, rajdane, icq, sub) VALUES('$user', '$pass', '$mail', '$skype', '$ip', '$avatar', '$rajdane', '$icq', '$sub')")or die(mysql_error());
echo 'Здравей, <b>' . $user . '</b>! Регистрацията е успешна! Може да влезеш от <a href="index.php">ТУК</a>'; } else { echo 'Псевдонима, който сте въвели съдържа забранени символи, или е тврде кратък!'; }}}
else { echo $errMsg; }
?></td></tr>
<tr><td><img src="../images/adb-down.png" border="0" /></td></tr>
</table>
<?php require("style2.php"); ?>
 
Вие дадохте една точка за support на vik96 .
Натиснете тук за да се върнете в темата.
 

Back
Горе