создал файл с формой регистрации regi.php и его обработчик res_regi.php вроде бы все верно но выдает ошибку! Товарищи эксперты помогите найдите причину ошибка
Parse error: syntax error, unexpected T_ELSE in Z:\home\test1.ru\www\regi\res_regi.php on line 51
файл regi.php
<form action="res_regi.php" method="post">
<table width="699" height="362" align="center" class="regi_fon">
<tr>
<td width="691" height="356" align="center" valign="top"><table width="689">
<tr>
<td width="681" align="center" class="regi_text">Регистрация пользователя</td>
</tr>
<tr>
<td align="center"> </td>
</tr>
</table>
<table width="689" align="center">
<tr>
<td height="82" colspan="2"> </td>
</tr>
<tr>
<td width="332" class="login_pass">введите свой логин:</td>
<td width="345"><label>
<input name="username" type="text" class="forma_vhoda" id="username">
</label></td>
</tr>
<tr>
<td class="login_pass">введите пароль(не менее 6 и не более 16 символов): </td>
<td><label>
<input name="passwd" type="password" class="forma_vhoda" id="passwd">
</label></td>
</tr>
<tr>
<td class="login_pass">повторите пароль:</td>
<td><input name="passwd2" type="password" class="forma_vhoda" id="passwd2"></td>
</tr>
<tr>
<td colspan="2" align="center"> </td>
</tr>
<tr>
<td colspan="2" align="center"><input name="submit" type="submit" class="buton" id="submit" value="Зарегистрироваться"></td>
</tr>
</table>
<p> </p></td>
</tr>
</table>
</form>
и файл regi.php
<? session_start(); ?>
<link href="../css/registr.css" rel="stylesheet" type="text/css">
<?
// Подключаемся к базе
include"../blocks/bd.php";
//заносим введенный пользователем логин в переменную $login, если он пустой, то уничтожаем переменную
if (isset($_POST['username'])) { $username = $_POST['username']; if ($username == '') { unset($username);} }
//заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную
if (isset($_POST['passwd'])) { $passwd= md5($_POST['passwd']); if ($passwd =='') { unset($passwd);} }
if (isset($_POST['passwd2'])) { $passwd2=$_POST['passwd2']; if ($passwd2 =='') { unset($passwd2);} }
//если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт
if (empty($username) or empty($passwd))
{
exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!");
}
//если логин и пароль введены,то обрабатываем их, чтобы теги и скрипты не работали, мало ли что люди могут ввести
$username = stripslashes($username);
$username = htmlspecialchars($username);
$passwd = stripslashes($passwd);
$passwd = htmlspecialchars($passwd);
//удаляем лишние пробелы
$username = trim($username);
$passwd = trim($passwd);
// проверка на существование пользователя с таким же логином
$result = mysql_query("SELECT id FROM users WHERE username='$username'",$db);
$myrow = mysql_fetch_array($result);
if (!empty($myrow['id'])) {
exit ("Извините, введённый вами логин уже зарегистрирован. Введите другой логин.");
}
// провверяем ввел ли пользователь пароль меньше 16 и больше 6 символов
if (strlen($passwd)<6 || strlen ($passwd) >16 );
{
$result2 = mysql_query ("INSERT INTO users (username,passwd) VALUES('$username','$passwd')");
// Проверяем, есть ли ошибки
if ($result2=='TRUE')
{
echo "Вы успешно зарегистрированы! Теперь вы можете зайти на сайт. <a href='index.php'>Главная страница</a>";
}
}
else
{
echo "<table width='403' height='276' align='center' class='stop_fon'>
<tr>
<td width='395' height='270' valign='middle'><p> </p>
<p class='stop_text'> Вы ввели не правильный пароль !<br>повторите попытку<br>
<a href='../regi/regi.php'>Регистрация</a></p></td>
</tr>
</table>";
}
?>
Спустя 16 минут, 55 секунд (17.12.2009 - 23:41) Romms написал(а):
убери ";"
if (strlen($passwd)<6 || strlen ($passwd) >16 );
Спустя 10 минут, 10 секунд (17.12.2009 - 23:51) Gigabit написал(а):
Супер! спасибо! Вот еще что оцените код на прочность мне нужно еще что нибудь там проверять?
Спустя 12 минут, 26 секунд (18.12.2009 - 00:04) Romms написал(а):
первое что бросилось в глаза:
Цитата |
$username = stripslashes($username); $username = htmlspecialchars($username); |
зачем удалять экранированные символы?
и канешно надо делать ещё и так:
$username = mysql_real_escape_string($username);
Спустя 14 минут, 13 секунд (18.12.2009 - 00:18) Gabriel написал(а):
if (isset($_POST['username'])) { $username = $_POST['username']; if ($username == '') { unset($username);} }
Папоффф:)
Зы почему мне кажеться что попов по дримвиверу програмить учился?
Спустя 2 минуты, 27 секунд (18.12.2009 - 00:20) Romms написал(а):
Цитата |
Зы почему мне кажеться что попов по дримвиверу програмить учился? |
Спустя 16 минут, 19 секунд (18.12.2009 - 00:37) Gabriel написал(а):
Romms
спасиб я поповым и его творениями не болею
спасиб я поповым и его творениями не болею
Спустя 2 часа, 2 минуты, 12 секунд (18.12.2009 - 02:39) VolCh написал(а):
А что за Попов, о котором все говорят?
Спустя 53 минуты, 48 секунд (18.12.2009 - 03:33) NewBePhp написал(а):
Gigabit
осмелюсь предложить вот что... огроничить доступ тех символов которые согласно безопастности скрипта могут навредить ходу работ сайта... и обходится лишь экранированием... ну на мой взгляд не айс... есть такое не официальное правило в таких ситуациях как рега... ммм... вроде так...
чем жеще фильтрация данных поступающих от пользователя тем меньше вероятность получ проблем в безопастности... лично я придерживаюсь таких рекомендации скажем пропускать лишь те символы которые четко и ясно отражают имя пользователя... КОЛЯ ВАСЯ и так далее... но не как ~!@#$%^ ???!!!!(<--- к примеру) думаю тут понятно... и согласитесь что выглядит не ахти... скажем такой диапозон символов [0-9a-zA-Zа-яА-Я ~_*] думаю он будет куда достаточно давать информации при реге... хотя скрипт в объеме может и стать куда объемнее но безопастности как говорится мало не бывает... (не по русски написал ) а за принебрежение заплатишь куда больше!!!
осмелюсь предложить вот что... огроничить доступ тех символов которые согласно безопастности скрипта могут навредить ходу работ сайта... и обходится лишь экранированием... ну на мой взгляд не айс... есть такое не официальное правило в таких ситуациях как рега... ммм... вроде так...
чем жеще фильтрация данных поступающих от пользователя тем меньше вероятность получ проблем в безопастности... лично я придерживаюсь таких рекомендации скажем пропускать лишь те символы которые четко и ясно отражают имя пользователя... КОЛЯ ВАСЯ и так далее... но не как ~!@#$%^ ???!!!!(<--- к примеру) думаю тут понятно... и согласитесь что выглядит не ахти... скажем такой диапозон символов [0-9a-zA-Zа-яА-Я ~_*] думаю он будет куда достаточно давать информации при реге... хотя скрипт в объеме может и стать куда объемнее но безопастности как говорится мало не бывает... (не по русски написал ) а за принебрежение заплатишь куда больше!!!
Спустя 3 минуты, 6 секунд (18.12.2009 - 03:36) Gabriel написал(а):
VolCh
лутше тебе этого незнать
NewBePhp
паранойя?
или жестко ограничиваем количество пользователей?
лутше тебе этого незнать
NewBePhp
паранойя?
или жестко ограничиваем количество пользователей?
Спустя 7 часов, 6 минут, 19 секунд (18.12.2009 - 10:42) NewBePhp написал(а):
Gabriel
извращенно мыслишь
извращенно мыслишь
Спустя 14 минут, 49 секунд (18.12.2009 - 10:57) Gigabit написал(а):
так что все же лучше?
Спустя 1 час, 20 минут, 12 секунд (18.12.2009 - 12:17) Gabriel написал(а):
Спустя 14 часов, 10 минут, 17 секунд (19.12.2009 - 02:27) DEATH написал(а):
mysql_real_escape_string нужен для работы при активном конекте к бд и учитывает кодировку соединения.
mysql_real_escape_string('...', $db_connects);
где сообсвенно $db_connect подключение mysql_connect();
В инных случаях mysql_escape_string достаточно.
mysql_real_escape_string('...', $db_connects);
где сообсвенно $db_connect подключение mysql_connect();
В инных случаях mysql_escape_string достаточно.
Спустя 19 часов, 54 минуты, 28 секунд (19.12.2009 - 22:22) Gabriel написал(а):
насчет mysql_real_escape_string
если второй параметр не указан использует последнее соединение.
a насчет mysql_escape_string
просто скопипастим с php.net и все станет ясно
This function has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 6.0.0. Relying on this feature is highly discouraged.
если второй параметр не указан использует последнее соединение.
a насчет mysql_escape_string
просто скопипастим с php.net и все станет ясно
This function has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 6.0.0. Relying on this feature is highly discouraged.