Грешка в логиката

uphero

Registered
Грешка в логиката дори и да не се веведе парола се изпълнява заявката

PHP:
<?php


if ($_POST["submit"])   


if ($_POST["user"]==NULL or strlen($_POST["user"])<=3) 
{ 
echo  "<div class='error'>Псевдонима, който сте въвели е прекалено кратък или не сте въвели такъв.</div>"; 
}
else { 
$user = htmlspecialchars($_POST["user"]);//
}
if (preg_match('/^[a-z0-9]+(_)?[a-z0-9]+$/i',$user)) 
   {
echo  "<div class='error'>Непозволени символи</div>";
   }
else 
  {
$user = htmlspecialchars($_POST["user"]);///
}





if ($_POST["pass"]==NULL or strlen($_POST["pass"])<=6) 
  { 
echo "<div class='error'>Паролата, която сте въвели е прекалено кратка или не сте въвели такава.</div>"; 
  }
  else
  {
   $pass = htmlspecialchars($_POST["pass"]); 
   }
  
if ($_POST["pass2"]==NULL or strlen($_POST["pass2"])<=6) 
  { 
echo "<div class='error'>Паролата, която сте въвели е прекалено кратка или не сте въвели такава.</div>";
 }

if ($_POST["pass"] != $_POST["pass2"]) 
{
echo "<div class='error'>Паролите не съвпадат!</div>";
} 
else 
{

if(empty($_POST["mail"]))
 {
 echo "<div class='error'>Моля въведете е-майл!</div>"; 
 }
elseif 
(!empty($_POST["mail"])) { $mail = htmlspecialchars($_POST["mail"]); }

if (!strstr($mail,"@") || !strstr($mail,".")) { $errMsg = "<div class='error'>Грешен e-mail адрес</div>"; }


$ip = $_SERVER['REMOTE_ADDR'];

$chekd = mysql_query("SELECT * FROM `members` WHERE `mail`='".$mail."'")or die(mysql_error());
$chekds = mysql_num_rows($chekd);

if ($chekds >'0') 
{ 
echo '<div class="error">Този email вече е регистриран! </div>'; 
}
else
{


$chek = mysql_query("SELECT * FROM `members` WHERE `user`='".$user."'")or die(mysql_error());
$cheks = mysql_num_rows($chek);
if ($cheks=='1') 
{ 
echo '<div class="error">Този потребител вече е регистриран! </div>';
 }
else {
//заявка 
echo '<div class="info">Здравей, <b>' . $user . '</b>! Регистрацията е успешна! Моля потвърдете регистрацията чрез връзката изпратена на Вашата електронна поща. </div>'; 
}
}
}


?>
 
Код:
<?php
if (isset($_POST["submit"])) {  
if ($_POST["user"]== NULL || strlen($_POST["user"])<=3) 
{ 
echo  "<div class='error'>Псевдонима, който сте въвели е прекалено кратък или не сте въвели такъв.</div>"; 
}
else { 
$user = htmlspecialchars($_POST["user"]);//
if (preg_match('/^[a-z0-9]+(_)?[a-z0-9]+$/i',$user)) 
   {
echo  "<div class='error'>Непозволени символи</div>";
   }
else {

$user = htmlspecialchars($_POST["user"]);///

if ($_POST["pass"]== NULL || strlen($_POST["pass"])<=6) 
  { 
echo "<div class='error'>Паролата, която сте въвели е прекалено кратка или не сте въвели такава.</div>"; 
  }
  else
  {
   $pass = htmlspecialchars($_POST["pass"]); 
if ($_POST["pass2"]==NULL || strlen($_POST["pass2"])<=6) 
  { 
echo "<div class='error'>Паролата, която сте въвели е прекалено кратка или не сте въвели такава.</div>";
 }
else {
if ($_POST["pass"] != $_POST["pass2"]) 
{
echo "<div class='error'>Паролите не съвпадат!</div>";
} 
else 
{
if($_POST["mail"] == NULL)
 {
 echo "<div class='error'>Моля въведете е-майл!</div>"; 
 }
else {
$mail = htmlspecialchars($_POST["mail"]); 
if (!strstr($mail,"@") || !strstr($mail,".")) { $errMsg = "<div class='error'>Грешен e-mail адрес</div>"; }
else {
$ip = $_SERVER['REMOTE_ADDR'];
$chekd = mysql_query("SELECT * FROM `members` WHERE `mail`='".$mail."'")or die(mysql_error());
$chekds = mysql_num_rows($chekd);
if ($chekds >'0') 
{ 
echo '<div class="error">Този email вече е регистриран! </div>'; 
}
else
{
$chek = mysql_query("SELECT * FROM `members` WHERE `user`='".$user."'")or die(mysql_error());
$cheks = mysql_num_rows($chek);
if ($cheks=='1') 
{ 
echo '<div class="error">Този потребител вече е регистриран! </div>';
 }
else {
//заявка 
echo '<div class="info">Здравей, <b>' . $user . '</b>! Регистрацията е успешна! Моля потвърдете регистрацията чрез връзката изпратена на Вашата електронна поща. </div>'; 
}}}}}}}}}}
?>

би трябвало да работи,но като цяло кода е слаб.Използвай регуларен израз за проверка на имейла,както и на името.Проверявай дали има човек със сещото име/имейл.

OR се използва в заявки.При if се използва знака || за или , == за ако е равно на нещо , != ако не е равно на нещо.
 

Горе