Добрый вечер уважаемые форумчане, вообщем то хочу в скрипте написать авторизацию и регистрацию. Так как это для меня первый скрипт работающий на базе данных, возникает много проблем.
Не знал как сделать это в безопасном виде, и поэтому решил взять готовый код.
И даже тут у меня проблемы, при попытки зарегистрироваться выводится белая страница. Содержимое файла register.php
---------------------------
<?php
include 'config/connect.php';
if(isset($_POST['submit']))
{
$err = array();
# проверям логин
if(!preg_match("/^[a-zA-Z0-9]+$/",$_POST['login']))
{
$err[] = "Логин может состоять только из букв английского алфавита и цифр";
}
if(strlen($_POST['login']) < 3 or strlen($_POST['login']) > 30)
{
$err[] = "Логин должен быть не меньше 3-х символов и не больше 30";
}
# проверяем, не существует ли пользователя с таким именем
$query = mysql_query("SELECT COUNT(user_id) FROM users WHERE user_login='".mysql_real_escape_string($_POST['login'])."'");
if(mysql_result($query, 0) > 0)
{
$err[] = "Пользователь с таким логином уже существует в базе данных";
}
# Если нет ошибок, то добавляем в БД нового пользователя
if(count($err) == 0)
{
$login = $_POST['login'];
# Убераем лишние пробелы и делаем двойное шифрование
$password = md5(md5(trim($_POST['password'])));
mysql_query("INSERT INTO users SET user_login='".$login."', user_password='".$password."'");
header("Location: login.php"); exit();
}
else
{
print "При регистрации произошли следующие ошибки:
";
foreach($err AS $error)
{
print $error."
";
}
}
}
?>
------------------------
Содержимое файла
/config/connect.php
------------------------
<?php
# Соединямся с БД
mysql_connect("localhost", "test2", "test2");
mysql_select_db("111111");
?>
----------------------
Форма регистрации
-----------------
<form action="register.php" method="post" target="_top">
<table width="100%" cellpadding="4" cellspacing="0" border="0" class="forumline">
<tr>
<td class="catSides">
<span class="cattitle">Регистрация</span>
</td>
</tr>
<tr>
<td class="row1">
Логин:<br/>
<input type="text" name="login" value="" />
</td>
</tr>
<tr>
<td class="row1">
Пароль:<br/>
<input type="password" name="password" />
</td>
</tr>
</table>
<input type="hidden" name="autologin" value="0" />
<input type="hidden" name="redirect" value="" />
<input class="subbutton" type="submit" name="login" value="Вход" />
</form>
---------------------
В чём может быть ошибка.
error_reporting(E_ALL);
$err[] - используй $err .= 'ERRoR';
а то у тебя велосипед с выводом))
Fashion, вроде говорят, что массивы емкая штука, неужели с переменной скрипт будет немного дольше выполняться ?
27 Дек 2010, 19:52Hameleon, Fashion правильно говорит. Конкатенация строки - долгий и неудобный для правильного логгирования метод.
27 Дек 2010, 20:07Я протестил, у меня больше времени на выполненение занимает операции с массивом, так как массивы сами по себе емкая штука. Второе: для вывода ошибок с массива надо еще и for задействовать....
27 Дек 2010, 20:36Hameleon, каждая строка это массив символов.
Попробуй:
$str = 'abc';
print $str[2];
Так что про "более ёмкая штука" это глупость
Конкатенация более медленная операция. Но всё это экономия на спичках, значения не имеет такая экономия. Важнее то, что с нормальным массивом проще работать.
Конечно не рулит, нам же надо узнать количество ошибок, на каждую вторую ошибку другой дизайн, шоб типа зебра была ну и всё такое 
suhonok, зачем? есть sizeof тоже не актуален? а зебра на ошибках не нужна. ошибок может быть и с десяток 