Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Правила работы с SESSION

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Monkey
Отправлено: 16 Ноября, 2008 - 15:12:10
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Нояб. 2008  


Помог: 0 раз(а)




Господа, я недавно стал заниматься PHP, ранее я работал на Delphi. Улыбка. Я сделал прогу работающая с SQL сервером, склад. Политика нашей компании упал на Linux. Естественно под вайном можно много чего проделать но получается криво. Я принял решение что нужно переучиваться, купил кучу книг и давай....

И так ближе к делу, так как режим будет много пользовательский, нужно будет вести на каждого пользователя учет. Мой выбор упал на глобальную переменную SESSION.

Моя затея такова.

у меня есть первая стартовая страница html, в которой при помощи form произвожу коннект к базе данных. Login, password,host,bases. Передаю эти параметры методом $_POST, другому файлу check.php, его главная задача определить произошел ли коннект с базой! Если результат верен то создается сессия в которой создается $_SESSION['connect'] и $_SESSION['base'] , для дальнейшей работы. вот листинг check.php

?php
include "./conf/addition.php";
SQL_connect($_POST['host'], $_POST['login'], $_POST['passwd'],$_POST['base']);
if (isset($_SESSION['connect']))
{
header ("Location:./menu.php");
}
?>


А вот листинг собственно /conf/addition.php это один из главных файлов, его главная задача, коннект, формирование и обработка 3х команд SELECT, INSERT, UPDATE при коннекте команда в самом низу.

<?php

# сборка команды SELECT - показать
function select_sborka ($tables,$colum,$where,$group,$order){
return select_string($colum).from_string($tables).where_sborka($where).group_string($group).order_string($order);
}
# сборка команды INSERT - вставка
function insert_sborka ($into_tables,$colum,$insert_values){
return insert_string ($into_tables).table_string($colum).values_string($insert_values);
}

# сборка команды UPDATE - обновление
function update_sborka ($table,$set_value,$where_value){
return update_string ($table).set_string($set_value).where_sborka($where_value);
}


# Функция преобразования массива в строку через запятую
function array_string ($array,$col){
$s=""; $i=0;
if ($col<>null)
{
while ($i<count($array[$col-1])-1)
{
$s=$s.$array[$col-1][$i].",";
$i++;
}
$s=$s.$array[$col-1][$i];
}
ELSE
{
while ($i<count($array)-1)
{
$s=$s.$array[$i].",";
$i++;

}
$s=$s.$array[$i];

}
return $s;
}

#функция обработки Select
function select_string ($array){
$s=array_string($array,null);
if (strlen($s)>0){
return 'SELECT '.$s;
}
}

#функция обработки From
function from_string ($array){
$s=array_string($array,null);
if (strlen($s)>0){
return ' FROM '.$s;
}
}

#функция обработки GROUP BY
function group_string ($array){
$s=array_string($array,null);
if (strlen($s)>0){
return ' GROUP BY '.$s;
}
}

#функция обработки ORDER BY
function order_string ($array){
$s=array_string($array,null);
if (strlen($s)>0){
return ' ORDER BY '.$s;
}
}



# для сборки функции INSERT

#функция обработки INSERT таблици
function insert_string ($array){
$s=array_string ($array,null);
if (strlen($s)>0)
{
return 'INSERT INTO '.$s;
}

}

#для функции INSERT поле
function table_string($array){
$s=array_string($array,null);
if (strlen($s)>0)
{
return '('.$s.')';
}
}

#для функции INSERT VALUES
function values_string($array){
$i=0;$s='';
while (count($array)<>$i)
{
$so=array_string($array,$i+1);
if (strlen($s)>0)
{
$s=$s.',('.$so.')';
}else $s='('.$so.')';
$i++;
}
if (strlen($s)>0){return ' VALUES '.$s;}
}



# для сбоки функции UPDATE

# функция для сборки UPDATE - таблиц
function update_string ($array){
$s=array_string ($array,null);
if (strlen($s)>0)
{
return 'UPDATE '.$s;
}

}



# массив двумерный разбиваем
function string_to_set ($array){
$i=0;$str="";
while (count($array)<>$i)
{
$str=$str.$array[$i][0]."=".$array[$i][1];
if (((count($array)>0))AND(count($array)-1<>$i) )
{$str=$str.",";}
$i++;
}
return $str;
}

# Фуенкция обработки массива под SET
function set_string ($array){
$s=string_to_set ($array);
if (strlen($s)>0) {return ' SET '.$s;}
}
# Сборка SET для сборки
/*
function set_sborka ($array)
{$str=set_string ($array);
if (strlen($str)>0)
{$str=' SET '.$str;}
return $str;
}
*/

# Функция перевода WHERE
function where_string ($array){
$i=0;$str='';
while (count($array)<>$i)
{
if (($array[$i][1]<>'')AND($array[$i][1]<>'""')AND($array[$i][1]<>'"%"')AND($array[$i][1]<>'()'))
{
if ((strlen($str)>0))
{
$str=$str.$array[$n][2].'('.$array[$i][0].$array[$i][1].')';
}else $str=$str.'('.$array[$i][0].$array[$i][1].')';
$n=$i;
}

$i++;
}
return $str;

}

# Сборка WHERE для сборки
function where_sborka ($array){
$str=where_string ($array);
if (strlen($str)>0)
{$str=' WHERE '.$str;}
return $str;
}

///*******************************************************************************
//////////// Запрос на добавление
# Разпрос на срвер
function chek ($str){
#session_start();
return mysql_query($str,$_SESSION['connect']) ;
}
//*********************************************************

# функция SELECT
function SQL_select ($tables,$colum,$where,$group,$order){
return chek(select_sborka ($tables,$colum,$where,$group,$order));
}

#функция INSERT
function SQL_insert ($into_tables,$colum,$insert_values){
return chek(insert_sborka ($into_tables,$colum,$insert_values));
}

#функция UPDATE
function SQL_update ($table,$set_value,$where_value){
return chek(update_sborka ($table,$set_value,$where_value));
}

//*************************************************************************************************
// ***************************** Сборка запроса для вывода текс в объекты ***************************
// ****** combobox - select
function cb_out ($name,$size,$tables,$colum,$where,$group,$order){
$result='';# полный результат
$swap='';# временный результат
$grid=SQL_select ($tables,$colum,$where,$group,$order);
//<option value="">Font size</option>
$result ='<select name="'.$name.'" size="'.$size.'"> <option value=""></option> ';
while ($read = mysql_fetch_array ($qrid)){
$swap='';
$swap = '<option value="'.$colum [0].'"> ';
$i=1;

while ($i<count($read[$col-1])){
$swap=$swap.$read[i].'" "';
}
$swap=$swap.'</option>';
$result=$swap;
}
return $result;
}





//**************************************************************************************************
//**************************************************************************************************








#Функция коннекта
function SQL_connect($host,$login,$passwd,$bases)
{
///////////// Производим коннект
// создаем сессию
if ($connect = mysql_connect ($host, $login, $passwd))
# коннект удался
{ session_start();
$_SESSION['connect']=$connect;
$_SESSION['base']=$bases;
mysql_select_db ($_SESSION['base'], $_SESSION['connect']);

}
# Ошибка коннекта
else
{
#echo 'Ошибка подключения'.mysql_error();
session_destroy ();
}
return $connect;

}


?>

все проходит замечательно, но одно но. Когда в файле ckeck.php, происходит переход на страницу

test/menu.php там при помощи frame он разбин на 2-е части. при нажатии на ссылку должно произвестись действие запроса SELECT, при его формировании в вункцию function chek ($str) находящийся в файле addition.php apahe выдает ошибку

Notice: Undefined variable: _SESSION in z:\home\localhost\www\tools\test\conf\addition.php on line 193

я перебрал много вариантов и всеравно появляются ошибки. Либо Session запускается дважды либо не понимает _SESSION .

У меня две версии как можно избавиться от ошибки, это либо разбить addition.php на 2-а а то и три фрагмента и работать.
И не совсем понимаю принцип работы include! во всех примерах в инете никто не использует include при объявдлении сессии, так как авторизация у большенства , при сравнении логина происходит тут же в файле не через функции.

Любые натации по моему коду приму! Сам знаю что код не идеален Улыбка
 
 Top
Джур
Отправлено: 16 Ноября, 2008 - 19:59:23
Post Id



Посетитель


Покинул форум
Сообщений всего: 423
Дата рег-ции: Март 2007  


Помог: 0 раз(а)




коллега, очень прошу РНР код обрамлять тегами [PHP ] [ /PHP] ибо трудно понять где он.

На данный момент смущает session_start(). По замыслу разработчиков, она должен быть в самом начале скрипта ибо инициализирует работу с сессиями, возможно поэтому и вылазиет ошибка.

include служит для подключения файлов... обычно это библиотечки и файлы настроек, там то обычно session_start() и распологают

(Отредактировано автором: 16 Ноября, 2008 - 20:11:12)



-----
Тамбовский каджит тебе товарищ
 
 Top
Monkey
Отправлено: 18 Ноября, 2008 - 19:43:52
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Нояб. 2008  


Помог: 0 раз(а)




Джур пишет:
коллега, очень прошу РНР код обрамлять тегами [PHP ] [ /PHP] ибо трудно понять где он.

На данный момент смущает session_start(). По замыслу разработчиков, она должен быть в самом начале скрипта ибо инициализирует работу с сессиями, возможно поэтому и вылазиет ошибка.

include служит для подключения файлов... обычно это библиотечки и файлы настроек, там то обычно session_start() и распологают


Пробле просто в том что FRAME основан как есть основной файл и протостепенные, вот второстепенным файлам передать SESSION получается что не получится. В общем я понял как нужно действовать! Просто буду передавать переменные второстепенным файлам метадом REQUEST.
 
 Top
Вездеход
Отправлено: 19 Ноября, 2008 - 08:11:36
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


Помог: 0 раз(а)




пипец...


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB