[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регистрация
twixrussian
Нажимаю регистрация вот такая ошибка появляеться:

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());


и по аналогии везде где есть обращение к БД smile.gif

Спустя 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 )
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.