|
|
|
| Всем известно что подключение к базе данных производится путем
$connect=mysql_connect ($host, $login, $passwd) - хост логин и пароль
потом этот же результат mysql_connect (он же $connect) мы использум в
mysql_select_db ($db, $connect)
а полсле я немного плаваю так как, есть два варианта
1) вариант
$str='SELECT * FROM 'home'';
mysql_query($str,$connect);
2) вариант
$str='SELECT * FROM 'home'';
mysql_query($str);
Вариант №2 хорошо применять когда в одном файле происходит коннект и выбор базы данных
Но в моем случае мне бы хотелось какие то операции выполнять непосредственно запросов на других страницах передавая им только методом POST самое необходимое, а тоесть
Авторизация происходит намного раньше, если она успешна то в таком случае открывается главная страница (menu.php) для работы с таблицами.
В моем случае при коннекте я делаю так
connect.php
......
session_start();
....
$_SESSION['connect']= mysql_connect ($host, $login, $passwd) ;
....
при открытии файла menu.php у меня возникла проблема
menu.php
.....
session_start();
......
$str='SELECT * FROM 'home'';
mysql_query($str,$_SESSION['connect']);
......
На это чудо код PHP мне отвечает
Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in таком то файле
Подскажите что я делаю не так!! не понимаю.
Все как по книге :-) | |
|
|
|
|
|
|
|
для: Monkey
(22.11.2008 в 19:50)
| | Я не вижу в твоём варианте особых плюсов и удобств.
Объясни зачем тебе этот вариант? | |
|
|
|
|
|
|
|
для: Monkey
(22.11.2008 в 19:50)
| | в сессиях невозможно сохранить дескрипторы объектов.
Сами объекты все рвно разрушаются между вызовами.
В частности, соединение, дескриптор которого Вы вытащили из сессионного массива, закрылось с завершением вызова того экземпляра скрипта, который его открыл, и поместил в сессию. | |
|
|
|
|
|
|
|
для: Trianon
(22.11.2008 в 21:09)
| | ММ я так понимаю при каждом запросе нужно заново подключаться выбирать базу а потом получить результат, так я понимаю? | |
|
|
|
|
|
|
|
для: Monkey
(23.11.2008 в 10:55)
| | При каждом каком запросе? http или sql?
при каждом http - да.
при каждом sql - нет. | |
|
|
|
|
|
|
|
для: Trianon
(23.11.2008 в 11:08)
| | Минуточку давайте разберемся!
все запросы идут из http! mysql_select_db и mysql_connect и т.д. это же ведь модули PHP.
Следовательно запросы на коннект нужно делать всегда, передавая функция самое необходимое для ее осуществления! Я правильно понимаю?
Честно я до этого программировал на Delphi 7, рабоатл с SQL при момощи Mysql.dll, решил программу переделать на WEB, принцип там тотже вот только переменные хранятся до закрытия приложения или уничтжения переменной. | |
|
|
|
|
|
|
|
для: Monkey
(23.11.2008 в 11:34)
| | Здесь всё точно также.
Только приложение закрывается каждый раз, когда php заканчивает выдавать очередную страницу.
Т.е. в конце обработки http-запроса.
А вовсе не когда пользователь закрывает окно браузера. | |
|
|
|
|
|
|
|
для: Trianon
(23.11.2008 в 11:38)
| | Понятно! Спасибо большое будем бараздить пространство дальше :-) | |
|
|
|
|
|
|
|
для: Trianon
(23.11.2008 в 11:38)
| | И у меня еще один вопрос!
Немного погодя я проверил метод который мы обсуждали выше и понял одно!
Я беру пример принципа работы PhpMyAdmin.
Новигатор полностью передрал у них (я имею ввиду дизайн frame)
так вот у них левый frame на ссилках имеет всевозможные параметры, база данных, таблица и token с длинным параметром.
Метод GET и POST не умеют передавать массивы а только строчки, не могу же я передавать пароль открытым текстом.
Создатели PhpMyAdmin конечно хорошо постарались и код у них сложный. И разобрать откуда этот проект берет переменную token пока я не понял.
Но знаю точно в отличии от них у меня пароль авторизации а также логин не лежит в отдельном файле. У меняже происходит сверка с SQL.
Ну так вот не могли бы вы подсказать как можно передать правым фреймам нужную информацию. Как на подобие token. Я так понимаю это какойто указатель на глобальную переменную. Я бы честно это бы все дело хранил бы в переменной SESSION только во фреймах сталкиваюсь с ошибками, что сессия уже была открыта.
Скажу честно до глобальных переменных еще не дошел, и есть ли смысл. Не уничтожется ли она при открытии новой страници?
Даже на этом форуме на ссылке ответить есть идентификаторы в торох не хранится мой логин и пароль а только id_post и т.д. | |
|
|
|
|
|
|
|
для: Monkey
(23.11.2008 в 13:08)
| | МММ мда я так и думал что самому ковыряться прийдется :-) | |
|
|
|
|
|
|
|
для: Monkey
(23.11.2008 в 13:08)
| | >Я беру пример принципа работы PhpMyAdmin.
>так вот у них левый frame на ссилках имеет всевозможные параметры, база данных, таблица и token с длинным параметром.
>Метод GET и POST не умеют передавать массивы а только строчки, не могу же я передавать пароль открытым текстом.
>Но знаю точно в отличии от них у меня пароль авторизации а также логин не лежит в отдельном файле. У меняже происходит сверка с SQL.
>Ну так вот не могли бы вы подсказать как можно передать правым фреймам нужную информацию. Как на подобие token. Я так понимаю это какойто указатель на глобальную переменную.
глобальные переменные не живут между вызовами скриптов.
С некоторой натяжкой можно считать, что так живет лишь массив $_SESSION.
Я бы честно это бы все дело хранил бы в переменной SESSION только во фреймах сталкиваюсь с ошибками, что сессия уже была открыта.
Так не вызывайте session_start() несколько раз.
>Скажу честно до глобальных переменных еще не дошел, и есть ли смысл. Не уничтожется ли она при открытии новой страници?
Она уничтожится по завершении обработки http-запроса.
>Даже на этом форуме на ссылке ответить есть идентификаторы в торох не хранится мой логин и пароль а только id_post и т.д.
На этом форуме логин с паролем гоняются через cookies. | |
|
|
|
|
|
|
|
для: Trianon
(23.11.2008 в 14:23)
| | Я не могу понять что ему надо
ВОТ ПЕРВЫЙ ФАЙЛ КОТОРЫЙ РЕШАЕТ КУДА ОТПРАВИТЬ ЛИБО
НА ПОВТОРЫЙ ВВОД ЛОГИНА И ПАРОЛЯ ЛИБО НА НОВИГАТОР
<?php
session_start();
require_once ("./conf/connect.php"); # файл с описанем функции коннект
#$_SESSION['connect'] = в результате обритает вид одномерного массива с данными о коннекте
login,passwd,host,db
@$_SESSION['connect']=SQL_connect($_POST['host'], $_POST['login'],
$_POST['passwd'],$_POST['base']);
if (isset($_SESSION['connect'])){
/*Ага вот этого мы впустим*/
require_once './menu.php';
} else /*Возрощаем наз*/
{ require_once './index.html'; }
?>
А вот описание файла MENU.PHP
<?php
if (isset($_SESSION['connect'])) проверка производился ли коннект
{
echo '<html>';
echo '<frameset cols="250,*">.
<frame src="./left.php" name="menu" scrolling=no border=10> // а вот тут должно произойти действие
<frame src="./menu/doc.php" name="right" scrolling=no border=10> //Этот файл пустой
</frameset>
<nofarme>
</html>';
}
else
{require_once './index.html';} /* коннекта небыло посылаем на ввод логина*/
?>
Как видиш сессия открылась в первом файле при сверке авторизации
А вот и описание файла LEFT.PHP в котором то у меня и происходит ошибка
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at z:\home\localhost\www\tools\test\left.php:1) in z:\home\localhost\www\tools\test\left.php on line 2
Notice: Undefined index: login in z:\home\localhost\www\tools\test\left.php on line 5
И так листинг LEFT.PHP
<?php
$a=array(
array('Товаров','./menu/goods.php'), //
array('Организации',"./menu/doc.php"),
array('Офисы',''),
array('Отделы',''),
array('Сотрудники',''),
array('Склад',''),
array('Виды передвижения',''),
array('Документы',''),
array('Информация о сети','')
);
echo '<HTML><BODY>';
echo '<br>';
echo "Меню склада";
echo '<br>';
echo '<table>';
$i=0;
while (count($a)<>$i)
{
echo '<tr><td><a href="'.$a[$i][1].'" target="right">'.$a[$i][0].'</a></tr></td>';
$i++;
};
echo '</table></BODY></HTML>';
?>
Прищелчке на ссылку "Товарав" открыватся страница
./menu/goods.php а уж в нем то точно нужно знать что такое SESSION а и менно на этой выдает ошибку
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at z:\home\localhost\www\tools\test\menu\goods.php:1) in z:\home\localhost\www\tools\test\menu\goods.php on line 2
Array
Notice: Undefined index: connect in z:\home\localhost\www\tools\test\menu\goods.php on line 6
Листонг самого файла GOODS.php его задача создать select - комбобокс, выборку из базы.
Но выборка так и не происходит в результате что SESSION создать не возможно
<?php
session_start();
require_once ("../conf/addition.php"); // описание функций коннекта, и вывод на экран строк. но до этого дело еще не доходит!
echo '<HTML>
<table><br>';
echo '<tr>';
echo '<td>';
echo '</td>';
echo '</tr>';
echo cb_out($_SESSION['connect'],'type_dev','1',
array('book'),
array('id','name'),
array(array("out_storehouse=",'"n"',"and"),array("indicator=",'"i"',"")),
array(''), array('indicator'));
/*<select name="fontsize" size="1">
<option value="">Font size</option>
<option value="8pt" style="font-size: 8pt"> echhd</option>';
*/
echo ' </table> </HTML>';
?>
Вот и все гдето я делаю что то не правильно гдето принцип нужно изменить в книгах особо описаний нет, пишут все должно работать, но конкретных примеров не приводят.
Подскажите хоть что нибудь пожалуйста :-( | |
|
|
|
|
|
|
|
для: Monkey
(23.11.2008 в 15:09)
| | - | |
|
|
|
|
|
|
|
для: Trianon
(23.11.2008 в 15:29)
| | <?php
Исправил ошибку вот таким методом знак @ перед session_start();
@session_start();
require_once ("../conf/addition.php"); // описание функций коннекта, и вывод на экран строк. но до этого дело еще не доходит!
echo '<HTML>
<table><br>';
..........
Выход у меня получился не идеальный! Но другого выхода я на данный момент не вижу. | |
|
|
|