Има ли грешка в кода

haus

Registered
Искам да попитам има ли някаде грешка в кода


Код:
<?php
require'dbconfig.php';

if(isset($_POST['reg']))
{
$name  = addcslashes($_POST['username']);
$pass1 = addcslashes($_PSOT['pass1']);
$pass2 = addcslashes($_PSOT['pass2']);
$email = addcslashes($_PSOT['email']);

if(strlen($name) > 4)
{
  $q = mysql_query("SELECT username FROM users WHERE username=$name' LIMIT 1") or die (mysql_error())
  if(mysql_num_rows($q) > 0)
  {
  $error = "Потребителското име е заето";
  }
 else
 {
  if(strlen($pass1) >= 6)
  {
  if($pass1 == $pass2)
  {
  if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+))*$",$email))
  {
  $error = "Невалиден e-mail";
  }
  else
  {
   $newpass = md5($pass1);
   $query = "INSERT INTO users SET username='$name', password='$newpass', email='$email'";
   mysql_query($query) or die(mysql_error());
  }
  }
  else
  {
$error = "Паролите не съвпадат";
  }  
  
  else
  {
  $error = "Паролата е двърде кратка";
  }
  
  }
}
else  
{
$_error= "Кратко име";

}
  


}

?>
 
haus каза:
Дава ми тази грешка

Parse error: syntax error, unexpected T_IF in C:\AppServ\www\games\register.php on line 35

при мен е този ред

Код:
  if(mysql_num_rows($q) > 0)

ми да де, трябва да затвориш заявката
ето така
Код:
<?php
require'dbconfig.php';

if(isset($_POST['reg']))
{
$name  = addcslashes($_POST['username']);
$pass1 = addcslashes($_PSOT['pass1']);
$pass2 = addcslashes($_PSOT['pass2']);
$email = addcslashes($_PSOT['email']);

if(strlen($name) > 4)
{
  $q = mysql_query("SELECT username FROM users WHERE username=$name' LIMIT 1") or die (mysql_error());
  if(mysql_num_rows($q) > 0)
  {
  $error = "Потребителското име е заето";
  }
 else
 {
  if(strlen($pass1) >= 6)
  {
  if($pass1 == $pass2)
  {
  if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+))*$",$email))
  {
  $error = "Невалиден e-mail";
  }
  else
  {
   $newpass = md5($pass1);
   $query = "INSERT INTO users SET username='$name', password='$newpass', email='$email'";
   mysql_query($query) or die(mysql_error());
  }
  }
  else
  {
$error = "Паролите не съвпадат";
  } 
 
  else
  {
  $error = "Паролата е двърде кратка";
  }
 
  }
}
else 
{
$_error= "Кратко име";

}
 


}

?>
 
сега ми дава тази грешка

Parse error: syntax error, unexpected T_ELSE in C:\AppServ\www\games\register.php on line 61

това е ред 61

Код:
else
  {
  $error = "Паролата е двърде кратка";
  }
 
Ахаа... Чак сега реших да ти разгледам кода... Имаш много else към края! Правиш ги всичките elseif и само последния да е else.
http://php.net/manual/bg/control-structures.elseif.php
 
PHP:
<?php
require'dbconfig.php';

if(isset($_POST['reg']))
{
$name  = addcslashes($_POST['username']);
$pass1 = addcslashes($_PSOT['pass1']);
$pass2 = addcslashes($_PSOT['pass2']);
$email = addcslashes($_PSOT['email']);

if(strlen($name) > 4)
{
  $q = mysql_query("SELECT username FROM users WHERE username=$name' LIMIT 1") or die (mysql_error());
  if(mysql_num_rows($q) > 0)
  {
  $error = "Потребителското име е заето";
  }
 else
 {
  if(strlen($pass1) >= 6)
  {
  if($pass1 == $pass2)
  {
  if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+))*$",$email))
  {
  $error = "Невалиден e-mail";
  }
  elseif
  {
   $newpass = md5($pass1);
   $query = "INSERT INTO users SET username='$name', password='$newpass', email='$email'";
   mysql_query($query) or die(mysql_error());
  }
  }
  elseif
  {
$error = "Паролите не съвпадат";
  }
 
  elseif
  {
  $error = "Паролата е двърде кратка";
  }

  }
}
else
{
$_error= "Кратко име";

}
 
}
?>
 
PHP:
<?php

require'dbconfig.php';



if(isset($_POST['reg']))

{

$name  = addcslashes($_POST['username']);

$pass1 = addcslashes($_PSOT['pass1']);

$pass2 = addcslashes($_PSOT['pass2']);

$email = addcslashes($_PSOT['email']);



if(strlen($name) > 4)

{

	$q = mysql_query("SELECT username FROM users WHERE username=$name' LIMIT 1") or die (mysql_error())

	if(mysql_num_rows($q) > 0)

	{

		$error = "Потребителското име е заето";

	}

	else

	{

		if(strlen($name) >= 3)

		{

			if(strlen($pass1) >= 6)

			{

				if($pass1 == $pass2)

				{

					if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+))*$",$email))

					{

						$error = "Невалиден e-mail";

					}

					else

					{

						$newpass = md5($pass1);

						$query = "INSERT INTO users SET username='$name', password='$newpass', email='$email'";

						mysql_query($query) or die(mysql_error());

					}

				}

				else

				{

					$error = "Паролите не съвпадат";

				} 

				



			}

			else

			{

				$error = "Паролата е двърде кратка";

			}

		}

		else 

		{

			$_error= "Кратко име";

		}

}



?>

Така?
 
Човече, кодът ти е просто кошмарен... Логиката ти е в тотално грешна насока и ако владееш създаването на блоксхеми и си направиш такава, ще видиш доколко погрешно е това!
Имаш елементарни PHP и MySQL синтактични грешки, затова най-добре помисли над тях и ги премахни! Не питай тук за щяло и нещяло...най-добре се помъчи да проумееш откъде идва грешката, защо не работи и т.н. Ако ти изкарва грешка - пишеш в гугъл това, което ти изкарва като грешка и продължаваш напред.
Над логиката... Най-голямото ти приемущество е, че във всеки програмен език (поне не знам да има друг), кодът започва като книга отгоре-надолу. Т.е. разковничето е в последователността на заявките, проверките и т.н. Не е задължително да лепиш на всеки if - else.. Достатъчно е единствено да провериш дали е вярно (в случая е невярно, защото е по-изчистено) или невярно. Лично аз предпочитам невярно, изхождайки от това, че ако е невярно, кодът спира (извеждане на грешка или просто die(), exit() и т.н.)... т.е. не ми трябва накрая да проверявам дали след проверките кодът е true, защото съм абсолютно сигурен, че е именно такъв. :)
Поздрави и ти пожелавам успех! Но четенето му е майката... всеки го мързи, но няма лек срещу това - ако искаш да знаеш, четеш. :P

Код:
<?php
require "dbconfig.php"; //Сигурен ли си, че файлът е с правилно име? Оформи го!
//Слагай таб на кода, за да се вижда по-добре
$name  = addslashes($_POST['username']); //Addslashes, а не addcslashes :))
$pass1 = addslashes($_POST['pass1']);	//POST, а не PSOT
$pass2 = addslashes($_POST['pass2']);
$email = addslashes($_POST['email']);

if(isset($_POST['reg'])) {
	$q = mysql_query("SELECT username FROM `users` WHERE username = '$name' LIMIT 1") or die(mysql_error());
	if(mysql_num_rows($q) > 0) {
		$error = "Потребителското име е заето";
	} elseif(strlen($name) < 4) {
		$error= "Кратко име";
	} elseif(strlen($pass1) =< 6) {
		$error = "Паролата е двърде кратка";
	} elseif($pass1 != $pass2) {
		$error = "Паролите не съвпадат";
	} elseif(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+))*$",$email)) {
		$error = "Невалиден e-mail";
	}	

	$newpass = md5($pass1);
	$query = mysql_query("INSERT INTO `users` (id, username, password, email) VALUES (NULL, '$name', '$newpass', '$email'") or die(mysql_error());
}
?>
 

Back
Горе