syntax error, unexpected $end

player

Новичок
syntax error, unexpected $end

Добрый день!

Я новичек в РНР, вчера написал скрипт, ошибка такая

Parse error: syntax error, unexpected $end ..... on line 76

//скрипт
//if(..){ ?>

//HTML

<?php } ?>//строка 76

скрипт очень простой, синтакс ошибки в скрипте исключены. Буду рад если кто подскажет что значит $end (я этой переменной в скрипте не использовал)
 

player

Новичок
да, это сообщение видел, я юзал поиск, но проблем со слешами у меня нет и я еще не знаю что это за переменная $end
Да, конечно глупо получилось с новой темой, мог бы и туда записать. сорри
 

SelenIT

IT-лунатик :)
PHP жалуется на то, что скрипт внезапно закончился там, где по всей логике должно быть что-то еще. Например, пропущенная закрывающая скобка }.
 

player

Новичок
странно, вот упрощенно мой скрипт, обычная логин функция
PHP:
<?php
$submit=$_POST['submit'];

if(!submit){//если скрипт запущен не посредством кнопки submit 
	?>
	<form action="admin.php" method=post>
	<table>
	<tr>
	<td>Login</td>
	<td><input type=text name=login></td>
	</tr>
	<tr>
	<td>Password</td>
	<td><input type=password name=pass></td>
	</tr>
	<tr><td></td><td><input type=submit name="submit" value="Login"></td></tr></table>
	</form>
<?php
exit;}

//проверка
$name=$_POST['login'];
$pass=$_POST['pass'];
$pass=md5($pass);
if($name && $pass){
	include('config.inc.php');
	
	$db=mysql_connect($db_server, $db_user, $db_pass);
	mysql_select_db($dbase);
	
	$acc=mysql_query("SELECT name, pass FROM cms_mods WHERE name='".mysql_escape_string($name)."'");
	$row=mysql_fetch_array($acc);
	if(($row)&&($pass==$row['pass'])){

		session_start();
		$_SESSION['name']=$row['name'];
   ?>
//НТМЛ "вы зашли"

   <?php
	} //закрывающая скобка
	else {
	?>
//НТМЛ "ошибка, введите данные еще раз"
<?php }  ?>
//закрывающая скобка от else
 

player

Новичок
точно, сенкс. Ндя, я чото подумал что все скобки попарно.... Новичек:)
Спасиб
 

440hz

php.ru
Автор оригинала: player
точно, сенкс. Ндя, я чото подумал что все скобки попарно.... Новичек:)
Спасиб
вот что б такого не было. разделяй логику и html
PHP:
if(true) {
     print('<html>');
     do {
          print('bla-bla-bla');
     } while(false);
     print('</html>');
}
а то быстро выучишь в каком слове пишется мягкий знак ...
 

SelenIT

IT-лунатик :)
player

Еще, по-мелочи:
1) Зачем переназначать переменные из $_POST, что мешает использовать их сразу?
2) Для корректной проверки переменной на существование служит [m]isset[/m], на пустоту - [m]empty[/m];
3) очевидно, что md5 должна идти после проверки пароля на пустоту;
4) проверку на совпадение логина и пароля можно и желательно делать сразу в запросе;
5) лучше использовать [m]mysql_real_escape_string[/m], и обязательно контролировать [m]magic_quotes[/m] (подробности здесь).
 

player

Новичок
спасибо, всегда рад советам по стилю и простоте скрипта. Я сам думал на счет первого пункта, но так как это стояло в учебнике РНР подумал что ТАК НАДА
Еще: как сделать проверку сразу в запросе? (пункт 4)
 

SelenIT

IT-лунатик :)
PHP:
"SELECT name, pass FROM cms_mods WHERE name='".mysql_real_escape_string($name)."' AND pass='".mysql_real_escape_string($pass)."'"
 

player

Новичок
а, ок, понял. спасиб, буду пытаться :)

-~{}~ 27.02.06 21:18:

всем привет! попытался сделать проверку данных пользователя сразу в запросе. Вот только не знаю точно как проверить верны ли они или нет. С

$acc=mysql_query("SELECT mod_name FROM cms_mods WHERE mod_name='".mysql_real_escape_string($name)."' AND mod_pass='".mysql_real_escape_string($pass)."'");

if(empty($acc)){

не получается. Как это люче сделать. Была идея проверить сколько записей в базе соответсвуют запросу, но еще не пробовал и не знаю, правильно ли это. Помогите плиз
 
Сверху