Warning: mysql_result() expects parameter 1 to be resource, boolean given in C:\Program Files\xampplite\htdocs\www\reg\registranion_controller.php on line 30
Вот как выглядет registranion_controller.php
<?php
// Подключаем конфигурационный файл
include '/reg/config.php';
// Подключаем файл коннекта
include '/reg/mysql_connect.php';
// Подключаем файл с функциями
include '/reg/default.php';
// Инициализация переменных
$user_login = !empty($_POST['user_login'])?$_POST['user_login']:NULL;
$user_password = !empty($_POST['user_password'])?$_POST['user_password']:NULL;
$ok = isset($_POST['ok'])?true:false;
define('SALT','YRSXDIVLITGG7');
if($ok)
{
if(mb_strlen($user_password) < 8)
{
echo 'Пароль не надежен, меньше 8-ми символов.';
}
else
{
$res = mysql_query("SELECT COUNT(*) AS `cnt`
FROM `". DB_PREFIX ."user`
WHERE `login` = '". mysql_real_escape_string($user_login) ."'
");
if(mysql_result($res,0) > 0)
{
echo 'Есть у нас уже один '. htmlspecialchars($user_login) .'. Попробуйте выбрать другой логин.';
}
else
{
// Создаем учетную запись
mysql_query("INSERT INTO `". DB_PREFIX ."user`
SET `login` = '". mysql_real_escape_string($user_login) ."',
`password` = '". md5($user_password . SALT) ."'
");
// Если установлена галочка автологина
if(isset($_POST['autologin']))
set_autologin(mysql_insert_id());
echo 'Все в порядке';
}
}
}
?>
<form action="" method="post">
Логин <input name="user_login" type="text"><br>
Пароль <input name="user_password" type="password"><br>
<input name="autologin" type="checkbox" value=""> Запомнить Вас?<br>
<input name="ok" type="submit" value="Зарегистрироваться">
</form>
Вот как выглядет autorize_controller.php
<?php
// Подключаем конфигурационный файл
include '../reg/config.php';
// Подключаем файл коннекта
include '../reg/mysql_connect.php';
// Подключаем файл с функциями
session_start();
$user_login = !empty($_POST['user_login'])?$_POST['user_login']:NULL;
$user_password = !empty($_POST['user_password'])?$_POST['user_password']:NULL;
$ok = isset($_POST['ok'])?true:false;
define('SALT','YRSXDIVLITGG7');
// Проверяем, есть ли сессионная переменная, отвечающая за авторизацию
// Если нет такой, предъявите аусвайс!
if(empty($_SESSION['login']))
{
if(isset($_COOKIE['hash']))
{
$_SESSION['login'] = get_login($_COOKIE['hash']);
}
elseif($ok)
{
$res = mysql_query("SELECT `id`, `login`
FROM `". DB_PREFIX ."user`
WHERE `login` = '". mysql_real_escape_string($user_login) ."'
AND `password` = '". md5($user_password . SALT) ."'
");
if(mysql_num_rows($res) > 0)
{
$row = mysql_fetch_assoc($res);
// Если установлена галочка автологина
if(isset($_POST['autologin']))
set_autologin($row['id']);
$_SESSION['login'] = $row['login'];
}
}
if(isset($_SESSION['login']))
echo 'Проходи, '. $_SESSION['login'] .'!';
else
echo 'Стой, стрелять буду!';
}
?>
<form action="" method="post">
Логин <input name="user_login" type="text"><br>
Пароль <input name="user_password" type="password"><br>
<input name="autologin" type="checkbox" value=""> Запомнить Вас?<br>
<input name="ok" type="submit" value="Тук-тук">
</form>
Вот как выглядет default.php
<?php
function rand_str($num = 10)
{
$arr_num = range("0","9");
$arr_let = range("a","z");
$arr = array_merge($arr_num,$arr_let);
$arr = array_merge($arr,$arr);
$arr = array_merge($arr,$arr_let);
$arr[] = "a";
$rand = microtime(true);
for($i = 0; $i < $num; $i++)
{
shuffle($arr);
$key .= $arr[(round(($rand * 1000 - floor($rand * 1000)),2) * 100 )];
$rand = microtime(true);
}
return $key;
}
Спустя 2 часа, 19 минут, 52 секунды (9.01.2010 - 23:59) andyp написал(а):
Смотрим описание ошибки: 30-ая строка в registranion_controller.php, функция mysql_result первым параметром получает $res boolean типа, а ожидает resource. Это значит, что предыдущий запрос завершается с ошибкой.
Распечатайте этот запрос и посмотрите почему.
Распечатайте этот запрос и посмотрите почему.
Спустя 10 часов, 56 минут, 50 секунд (10.01.2010 - 10:56) twixrussian написал(а):
Я это понял) Я просто оч мало пока хнаю в php и mysql и хотелось бы увидеть готовое решение...)
Спустя 23 минуты, 7 секунд (10.01.2010 - 11:19) VolCh написал(а):
Готовое решение
и по аналогии везде где есть обращение к БД
$res = mysql_query("SELECT `id`, `login`
FROM `". DB_PREFIX ."user`
WHERE `login` = '". mysql_real_escape_string($user_login) ."'
AND `password` = '". md5($user_password . SALT) ."'
")
or die ('Ошибка SQL: ' . mysql_error());
и по аналогии везде где есть обращение к БД
Спустя 46 минут, 46 секунд (10.01.2010 - 12:06) twixrussian написал(а):
А можешь готовое решение дать? а то не получилось что то
Спустя 57 минут, 20 секунд (10.01.2010 - 13:03) VolCh написал(а):
Что не получилось-то?
Спустя 15 часов, 35 минут, 6 секунд (11.01.2010 - 04:39) Gabriel написал(а):
а почему для начала не заменить это if(mysql_result($res,0) > 0), на это if ( mysql_num_rows( $res ) > 0 )