[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Что-то не так с областью видимости ресурса.
dennnyk
В скрипт Login.php инклюдиться connect.php и формой вызывается start.php - почему то однако в start.php не виден ресурс поднятого в connect.php MySQL-соединения. Поясните как быть ...

login.php
PHP
include ('connect.php');

...
echo 
"<center>";
echo 
"<form action='start.php' method='post'>";
echo 
"<BR><BR><BR>Введите Логин: ";
echo 
"<input type='text' name='login' value=''>";
echo 
"<BR>Введите Пароль: ";
echo 
"<input type='password' name='pass' value=''>";
echo 
"<input type='hidden' name='hash' value='".$hash."'>";
echo 
"<BR><BR><input type='submit' name='submit' value='Отправить'>";
echo 
"</form>";



connect.php
PHP
$mysql_user 'root';
$mysql_password 'pass';
$mysql_host '127.0.0.1';
$mysql_base 'school';

$db_link mysql_connect($mysql_host$mysql_user$mysql_password);
if (!
$db_link
{
    die ('<br>Could not connect: ' mysql_error());  }
else
{
     echo '<br>MySQL Connected <B>successfully!</b>';  }

if (
mysql_select_db($mysql_base,$db_link))
{
    echo '<br>MYSQL database selected <B>successfully!</b>';  }
else
{
    die('<br>Could not connect: ' mysql_error());   }



start.php
PHP
<?
    global $db_link;

    $sql_result mysql_query ('select id, pass from users where login="'.$_REQUEST['login'].'";',$db_link)
  or die("Ошибка запроса: " mysql_error($db_link));

...




Спустя 3 минуты, 32 секунды (1.07.2009 - 02:26) PandoraBox2007 написал(а):
start.php

PHP
<?php

include 
('./connect.php');

global $db_link;

$sql_result = mysql_query ("SELECT id, pass from users WHERE login='{$_REQUEST['login']}'", $db_link) or die("Ошибка запроса: " . mysql_error($db_link));

// ...

Спустя 9 минут, 12 секунд (1.07.2009 - 02:35) dennnyk написал(а):
То есть заново поднять соединение в вызванном START.PHP предлагается.
А что будет с уже поднятым при инклюде Connect.php из Login.php ?

Спустя 1 минута, 49 секунд (1.07.2009 - 02:37) dennnyk написал(а):
У меня система будет использоваться большим к-ом юзеров - нужно подумать о ресурсах сервера - потому и вопрос ...

Спустя 5 часов, 32 секунды (1.07.2009 - 07:37) twin написал(а):
Цитата
То есть заново поднять соединение в вызванном START.PHP предлагается.

Не заново. Соединение закрывается автоматически, когда заканчивает работу скрипт. А так как это два разных скрипта, соответственно при начале работы второго, нужно снова обеспечить коннект.
А вот
PHP
global $db_link;

тут явно ни к чему.

Спустя 8 минут, 36 секунд (1.07.2009 - 07:46) dennnyk написал(а):
Спасибо

Спустя 1 час, 1 минута, 3 секунды (1.07.2009 - 08:47) PandoraBox2007 написал(а):
используй mysql_pconnect и снизь нагрузку

mysql_pconnect() работает аналогично mysql_connect() с двумя отличиями.

Во-первых, при соединении, функция пытается найти уже открытый (постоянный) указатель на тот же сервер с тем же пользователем и паролем. Если он найден, возвращён функцией будет именно он, вместо открытия нового соединения.

Во-вторых, соединение с SQL-сервером не будет закрыто, когда работа скрипта закончится. Вместо этого, оно останется рабочим для будущего использования (mysql_close() также не закрывает постоянные соединения)

Опциональный параметр client_flags появился в PHP 4.3.0.

Соединения такого типа называют 'постоянными'.

Спустя 19 минут, 51 секунда (1.07.2009 - 09:07) twin написал(а):
Мне вот всегда интересно было, как его использовать. То есть соединение это открыто всегда. И сколько скриптов будет запущено одновременно, столько и будет постоянных соединений. Любопытно, это как сказывается на ресурсах...

Спустя 13 минут, 56 секунд (1.07.2009 - 09:21) PandoraBox2007 написал(а):
Цитата (twin @ 1.07.2009 - 06:07)
Мне вот всегда интересно было, как его использовать. То есть соединение это открыто всегда. И сколько скриптов будет запущено одновременно, столько и будет постоянных соединений. Любопытно, это как сказывается на ресурсах...

ну для этого есть контроль дочерних и родительских процессов

Спустя 6 минут, 34 секунды (1.07.2009 - 09:27) twin написал(а):
Не совсем понял причем тут это...

Спустя 58 минут, 23 секунды (1.07.2009 - 10:26) dennnyk написал(а):
Спасибо за наыодку на mysql_pconnect !!!
Вернемся к исходному скрипту - добавил include (connect.php'');
Возвращает соверщеннюйшую фигню !!!

Цитата
<?
    require ("connect.php");;

    echo "<BR>login=".$_REQUEST['login'];
    echo "<BR>pass =".$_REQUEST['pass'];
    echo "<BR>hash =".$_REQUEST['hash'];

    $sql_text = 'select u.id, u.pass, u.login, s.number from users u, school s where u.SchoolID=s.ID and  u.login="'.$_REQUEST['login'].'";';
    $sql_result = mysql_query ($sql_text,$db_link)
  or die("Ошибка запроса: " . mysql_error($db_link));

    $row = mysql_fetch_row ($sql_result);

    if ($row[1] = $_REQUEST['pass'])

    {
echo "<BR>Верный пароль!";
}
    else
    {
echo "<BR>НЕверный пароль!";
};

    $OldLiveTimeCookie = $_COOKIE["LT"];
    $CurrentTimeCookie = time();

    echo "<BR>sql_text='".$sql_text."'<br><br>";
    print_r ($row);
   
?>


всегда пароль верный оказывается и в запросе вместо PASS из базы возвращает значение $_REQUEST['pass']. Вот результат с экрана:

Цитата
MYSQL connection test:

MySQL Connected successfully!
MYSQL database selected successfully!
login=db_root
pass =aabbcc
hash =72adc360b1460419041dda73ffa487ce
Верный пароль!
sql_text='select u.id, u.pass, u.login, s.number from users u, school s where u.SchoolID=s.ID and u.login="db_root";'

Array ( [0] => 1 [1] => aabbcc [2] => db_root [3] => 436 )


Причем все остальные поля нормально вытаскивает !!!
Что за беда такая ???

Спустя 49 минут, 44 секунды (1.07.2009 - 11:15) dennnyk написал(а):
Попробовал сменить имя поля с PASS на PASSWORD.
Ничего не изменпилось - так и выводит вместо значения поля PASS значение переданное в скрипт $_REQUEST['pass']

Спустя 2 минуты, 43 секунды (1.07.2009 - 11:18) glock18 написал(а):
можэт это из-за пыканекта? он раз подключился, а теперь ты вводи хоть что, а он берет старое соединение просто. думаю, так.

Спустя 1 час, 1 минута, 15 секунд (1.07.2009 - 12:19) dennnyk написал(а):
Я не использовал PCONNECT.
Вот мой connect.php:

Цитата
echo '<BR>MYSQL connection test:<BR>';

$mysql_user = 'root';
$mysql_password = 'pass';
$mysql_host = '127.0.0.1';
$mysql_base = 'school';

$db_link = mysql_connect($mysql_host, $mysql_user, $mysql_password);
if (!$db_link)
{      die ('<br>Could not connect: ' . mysql_error());  }
else
{      echo '<br>MySQL Connected <B>successfully!</b>';  }

if (mysql_select_db($mysql_base,$db_link))
{      echo '<br>MYSQL database selected <B>successfully!</b>';   }
else 
{    die('<br>Could not connect: ' . mysql_error());  }

Спустя 3 минуты, 26 секунд (1.07.2009 - 12:23) PandoraBox2007 написал(а):
if ($row[1] == $_REQUEST['pass']) wink.gif


PHP
if (isset($_REQUEST['login'])) // GET/POST
{
 require ("connect.php");
 
 $_REQUEST
['login'] = htmlspecialchars($_REQUEST['login']);

 echo "<BR>login= {$_REQUEST['login']}";
 echo "<BR>pass = {$_REQUEST['pass']}";
 echo "<BR>hash = {$_REQUEST['hash']}";

 $sql = "SELECT u.id, u.pass, u.login, s.number FROM users u, school s WHERE u.school_id = s.id and u.login='{$_REQUEST['login']}'";
 echo $sql;
 $sql_result = mysql_query ($sql, $db_link) or die("Ошибка запроса: " . mysql_error($db_link));

 $row = mysql_fetch_row ($sql_result);

 if ($row[1] == $_REQUEST['pass'])
 {
   echo "<BR>Верный пароль!";
 } else {
   echo "<BR>НЕверный пароль!";
 };
 $OldLiveTimeCookie = $_COOKIE["LT"];
 $CurrentTimeCookie = time();

 echo "<BR>sql_text = '$sql_text'<br><br>";
 print_r($row);
}


SQL:
Код
CREATE TABLE `school` (
 `number` smallint(6) NOT NULL,
 PRIMARY KEY  (`number`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;

CREATE TABLE `users` (
 `id` smallint(6) NOT NULL auto_increment,
 `login` char(32) NOT NULL,
 `pass` varchar(64) NOT NULL,
 `school_id` smallint(6) NOT NULL,
 PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;

Спустя 2 минуты, 44 секунды (1.07.2009 - 12:25) dennnyk написал(а):
Все верно - СПАСИБО

Спустя 1 минута, 31 секунда (1.07.2009 - 12:27) twin написал(а):
Интересно, а мускул ошибку не возвращает? Вообще в запросах через php не нужна точка с запятой.

Спустя 4 часа, 40 минут, 12 секунд (1.07.2009 - 17:07) dennnyk написал(а):
На точку не ругается
Быстрый ответ:

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