Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите исправить ошибки, пожалуйста 
V
    Опции темы
aluk
Дата 27.3.2007, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 27.3.2007

Репутация: нет
Всего: -2



вобщем такая прабла скачал файл с страници http://vingrad.ru/PHP-PHPSCRIPTS-002849 "qwe.php", все настроил но при запуске браузер выводит следующее:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in z:\home\my_ip\www\index.php on line 132

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in z:\home\my_ip\www\index.php on line 106

Warning: Cannot modify header information - headers already sent by (output started at z:\home\my_ip\www\index.php:132) in z:\home\my_ip\www\index.php on line 34



 ! 
PARROT
Модератор: Название темы должно отражать ее суть!


Это сообщение отредактировал(а) PARROT - 27.3.2007, 23:59
PM MAIL ICQ   Вверх
SelenIT
Дата 27.3.2007, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



aluk, первые две ошибки - показатель того, что что-то не то случилось с запросом (либо он не дошел до базы, либо "не понравился" ей). Ситуация может стать понятнее, если "допросить" саму базу, что ей не нравится - заменить все вызовы mysql_query на что-нибудь вроде
Код

if (!mysql_query($query)) echo mysql_error().'  в строке '.__LINE__;


Третья ошибка - косвенное следствие предыдущих. Подробности здесь.

Это сообщение отредактировал(а) SelenIT - 27.3.2007, 23:20


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
aluk
Дата 28.3.2007, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 27.3.2007

Репутация: нет
Всего: -2



я тока 5 дней как начал изучать php поэтому многое ненаю=)
ну я заменил но чот все равно эти ошибки, хотя наверно я не так все заменил, но мне кажется ошибка в этой строке   
if( mysql_num_rows( $result ) == 0 )
    {  redirect( "mod94" );  }


 redirect( "mod94" ); можете обьяснить что это значит или где можно об этом прочитать? я так понял это типа параметра страницы на которую должен перейти браузер, но может ее нада типа закрепить к какойто странице или что вобщем мне непонятна эта вещь=(
PM MAIL ICQ   Вверх
mishaSL
Дата 28.3.2007, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



Цитата(aluk @  28.3.2007,  16:11 Найти цитируемый пост)
я тока 5 дней как начал изучать php

Советую вам начать изучение PHP с более простых примеров. А еще лучше с прочтения какой-нибудь книги по PHP.

Цитата(aluk @  28.3.2007,  16:11 Найти цитируемый пост)
edirect( "mod94" ); можете обьяснить что это значит или где можно об этом прочитать?

Это функция в этой программе, которая выглядити так:
Код

function redirect( $par )
  {
   header( "Location: qwe.php?task=" . $par );
   exit;
  }

про header вы можете почитать здесь

Добавлено через 2 минуты и 48 секунд
Также Воспользуйтесь советом SelenIT, и покажите ошибки smile 


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
aluk
Дата 28.3.2007, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 27.3.2007

Репутация: нет
Всего: -2



а где именно заменять и как? если я удаляю старую строку то вылазит еще ошибки типа неизвестная переменная ресулт... а ошибки так же и остались выводиться 
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in z:\home\my_ip\www\index.php on line 132

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in z:\home\my_ip\www\index.php on line 106

Warning: Cannot modify header information - headers already sent by (output started at z:\home\my_ip\www\index.php:132) in z:\home\my_ip\www\index.php on line 34
+
еще ошибки
PM MAIL ICQ   Вверх
PARROT
Дата 28.3.2007, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



aluk, выложите Ваш код сюда, без него трудно Вам помочь. И воспользуйтесь советами форумчан, купите книгу и начните от простого к сложному.


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
aluk
Дата 28.3.2007, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 27.3.2007

Репутация: нет
Всего: -2



куплю=)

вот код: 
Код

<?php

 // Функция получения IP пользователя
 function get_ip()
  {
   if ($ip = getenv("HTTP_CLIENT_IP"))
    {  return $ip;  }

   if ($ip = getenv("HTTP_X_FORWARDED_FOR"))
    {
     if ($ip == '' || $ip == "unknown")
      {  $ip = getenv("REMOTE_ADDR");  }

     return $ip;
    }
   if ( $ip = getenv("REMOTE_ADDR") )
    {  return $ip;  }
  }

 // Вычисляе хэш безопасности
 function hash( $user , $user_agent , $user_ip , $tm )
  {  return md5( $user ) . md5( $user_agent ) . md5( $user_ip ) . md5( $tm );  }

 // Получаем текущее время с учетом дробных частей секунды
 function getmicrotime()
  {
   $mt = explode( " ", microtime() );
   return ( (float)$mt[0] + (float)$mt[1] );
  }

 // Редирект с параметром
 function redirect( $par )
  {
   header( "Location: index.php?task=" . $par );
   exit;
  }

 // Продление сессии (проверка, что пользователь - авторизован)
 function check()
  {
   // Ищем пользователя с именем, указанным в куках
   $result = mysql_query( "SELECT `*` FROM `auth_members` WHERE `name` = '" . mysql_escape_string( $_COOKIE['name'] ) . "' LIMIT 1" );

   // Еслии пользователя с таким именем нет, делаем редирект
   if( mysql_num_rows( $result ) == 0 )
    {
     setcookie( "time" , "" , time() - 900 , "/" );
     setcookie( "name" , "" , time() - 900 , "/" );

     redirect( "not_auth" );
    }

   // Парсим полученную запись.
   global $user;
   $user = mysql_fetch_object( $result );

   // Количсетво минут для жизни сессии
   $minutes = 15;
   // Ищем, есть ли активная сессия
   $result = mysql_query( "SELECT `*` FROM `auth_sessions` WHERE `member` = " . $user -> id . " AND `hash` = '" . hash( $user -> name , $_SERVER['HTTP_USER_AGENT'] , get_ip() , $_COOKIE['time'] ) . "' AND `time` > " . ( time() - ( $minutes * 60 ) ) . " LIMIT 1 " );

   // Если нету активной сессии, перекидываем на фору авторизации
   if( mysql_num_rows( $result ) == 0 )
    {
     setcookie( "time" , "" , time() - 900 , "/" );
     setcookie( "name" , "" , time() - 900 , "/" );

     redirect( "not_auth" );
    }

   // Если авторизированный пользователь хочет выйти
   if( isset( $_GET['quit'] ) )
    {
     // Удаляем запись о сессии пользователя
     mysql_query( "DELETE FROM `auth_session` WHERE `id` = " . $user -> id . " AND `hash` = '" . hash( $user -> name , $_SERVER['HTTP_USER_AGENT'] , get_ip() , $_COOKIE['time'] ) . "'" );

     // чищаем куки и усианавливаем время жизни в прошлом
     setcookie( "time" , "" , time() - 900 , "/" );
     setcookie( "name" , "" , time() - 900 , "/" );

     // Возвращаем значение "Ложь"
     return FALSE;
    }
   // Иначе, т.е. если пользователь не хочет выходить
   else
    {
     // Обновляем время последней активности пользователя на текущее.
     mysql_query( "UPDATE `auth_session` SET `time` = " . time() . " WHERE `member` = " . $user -> id . " AND `hash` = '" . hash( $user -> name , $_SERVER['HTTP_USER_AGENT'] , get_ip() , $_COOKIE['time'] ) . "'" );

     // Продлеваем время жизни кук
     setcookie( "time" , $_COOKIE['time'] , time() + ( $minutes * 60 ) , "/" );
     setcookie( "name" , $_COOKIE['name'] , time() + ( $minutes * 60 ) , "/" );

     // Возвращаем значение "Истина"
     return TRUE;
    }
  }

 // Функция авторизации
 function auth()
  {
   // Ищем пользователя с именем, указанным в куках
   $result = mysql_query( "SELECT `*` FROM `auth_members` WHERE `name` = '" . mysql_escape_string( $_POST['name'] ) . "' AND `password` = '" . md5( $_POST['pass'] ) . "' LIMIT 1" );

   // Еслии пользователя с таким именем нет, делаем редирект
   if( mysql_num_rows( $result ) == 0 )
    {  redirect( "not_auth" );  }

   // Парсим полученную запись.
   $user = mysql_fetch_object( $result );

   // Получаем текущее время с учетом дробных частей секунды
   $tm = getmicrotime();
   // Вставляем запись в таблицу с сессиями.
   mysql_query( "INSERT INTO `auth_sessions` VALUES( " . $user -> id . " , " . time() . " , '" . hash( $user -> name , $_SERVER['HTTP_USER_AGENT'] , get_ip() , $tm ) . "' )" );

   // Ставим пользователю куки с его логинов и уникальным временем авторизации. Время жизни кук - 15 минут
   setcookie( "time" , $tm , time() + 900 , "/" );
   setcookie( "name" , $user -> name , time() + 900 , "/" );

   // делам редирект без параметра, т.к. никаких ошибок не было
   redirect( "" );
  }

 // Функция регистрации
 function reg()
  {
   // Ищем пользователя с именем, указанным в форме регистрации
 
   $result = mysql_query( "SELECT `*` FROM `auth_members` WHERE `name` = '" . mysql_escape_string( $_POST['name'] ) . "' LIMIT 1" );
  
//ВОТ ДОБАВИЛ СТРОКУ ДЛЯ  "ДОПРОСА" БАЗЫ МНЕ ПОКАЗАЛО Query was empty в строке 133
if (!mysql_query($result)) echo mysql_error().'  в строке '.__LINE__;
  
 // Если пользователь найден, делаем редиркт
   if( mysql_num_rows( $result ) == 1 )
    {  redirect( "exists" );  }

   // Иначе, регистрируем пользователя
   mysql_query( "INSERT INTO `auth_members` VALUES ( '' , '" . mysql_escape_string( $_POST['name'] ) . "' , '" . md5( $_POST['pass1'] ) . "' )" );
   $_POST['pass'] = $_POST['pass1'];

   // Делаем как бы автоматическую авторизацию после регисрации.
   auth();
  }

 // ---------------
 // Соединение с MySQL не комментирую, т.к. не в тему статьи

 $host = "localhost";
 $port = "3306";
 $user = "root";
 $pass = "root";
 $dbnm = "war";

 $h = ( empty( $post ) ) ? $host : $host . ":" . $port;

 $db = mysql_connect( $h , $user , $pass );

 if( !$db )   // Если соединиться не удалось:
  {
   print ("Datebase connection failed.");
   exit();
  }

 if( ! mysql_select_db( $dbnm ) )
  {
   print ("Datebase select failed.");
   exit();
  }

 // ---------------

 // Если нажата кнопка с именем blogin (Авторизация)
 if( $_SERVER['REQUEST_METHOD'] == "POST" && isset( $_POST['blogin'] ) )
  {
   // Если поле логина или пароля пустое - делаем редирект
   if( empty( $_POST['name'] ) || empty( $_POST['pass'] ) )
    {  redirect( "fields" );  }

   // В протовном случае переходим к авторизации
   auth();
  }

 // Если нажата кнопка с именем breg (Регистрация)
 if( $_SERVER['REQUEST_METHOD'] == "POST" && isset( $_POST['breg'] ) )
  {
   // Если поле логина или пароля или его подтверждения - пусты делаем редирект
   if( empty( $_POST['name'] ) || empty( $_POST['pass1'] ) || empty( $_POST['pass2'] ) )
    {  redirect( "fields" );  }

   // Если введенные пароли не совпадают - делаем редирект
   if( md5( $_POST['pass1'] ) != md5( $_POST['pass2'] ) )
    {  redirect( "nepass" );  }

   // Иначе переходим к функции регистрации
   reg();
  }

 // Если у поьзователя стоят куки и функция check() скажет что пользователь залогинен
 if( isset( $_COOKIE['time'] ) && isset( $_COOKIE['name'] ) && check() == TRUE )
  {  print "Welcome.<br><a href='?quit'>Выйти</a>";  }
 // иначе
 else
  {
   // Если была ошибка, выводим соответствующее сообщение
   if( ! empty( $_GET['task'] ) )
    {
     switch( $_GET['task'] )
      {
       case "nepass":   print "Пароли не совпадают";
            break;
       case "not_auth": print "Логин или пароль неверный.";
            break;
       case "fields":   print "Не заполнены все поля";
            break;
       case "exists":   print "Пользователь с таким именем уже существует";
            break;
      }

     print "<br><br>";
    }
   // И показываем форму

?>
Вход: <form action='' method='POST'>
Логин: <input type='text' name='name' maxlength='127' value=''><br>
Пароль: <input type='text' name='pass' maxlength='127' value=''><br>
<input type='Submit' name='blogin' value='Вход'><br>
</form>
Регистрация: <form action='' method='POST'>
Логин: <input type='text' name='name' maxlength='127' value=''><br>
Пароль: <input type='text' name='pass1' maxlength='127' value=''><br>
Повторите пароль: <input type='text' name='pass2' maxlength='127' value=''><br>
<input type='Submit' name='breg' value='Вход'>
</form>
<?php
  }

?>



PM MAIL ICQ   Вверх
aluk
Дата 28.3.2007, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 27.3.2007

Репутация: нет
Всего: -2



о разобрался как 
:
        if (!mysql_query($query)) echo mysql_error().'  в строке '.__LINE__;
пользоваться вроде исправил все там ошибка в скрипте была в двух местах вместо 
Код
$result = mysql_query( "SELECT `*` FROM `auth_members` WHERE `name` = '" . mysql_escape_string( $_POST['name'] ) . "' LIMIT 1" );


нада было писать 
Код
$result = mysql_query( "SELECT * FROM `auth_members` WHERE `name` = '" . mysql_escape_string( $_POST['name'] ) . "' LIMIT 1" );

 тоесть не брать * в кавычки, а прав?

Добавлено через 3 минуты и 49 секунд
даже не в двух там много таких ошибок=)

Добавлено через 10 минут и 3 секунды
 smile  пашет!!!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0674 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.