Консультация № 146722
10.10.2008, 15:14
0.00 руб.
0 7 3
Добрый день..
скажите пожалуйста что не так с функцией?
постоянно пишет
Код:
 Fatal error: Cannot redeclare seesionform() (previously declared in Z:\home\site\www\php.php:13) in Z:\home\site\www\php.php on line 29 


Эта функция у меня в ядре CMS....я рассчитываю сделать проверку подлинности логина и пароля, после чего нам выдается наш id номер, и благодаря нему мы сможем использовать доступ к своему профилю, и получим права если таковы имеются...

Приложение:
function seesionform()
{
session_start();
ob_start();
setcookie("TestCookie", $user, time()+3600);
setcookie("TestCooki", $id, time()+3600);
ob_end_flush();
$_SESSION[password] = $_POST[password];
$_SESSION[login] = $_POST[login];
$password = MD5($_SESSION[password]);
$username = $_SESSION[login];
$ucc = mysql_query("SELECT * FROM userlist WHERE username='$username' AND password='$password'");
if ($ucc == true) {
$uca = mysql_fetch_array($ucc);
$_SESSION[id] = $uca[user_id];
$uid = $_SESSION[id];
}
return ('$password'.'$username'.'$ucc'.'$uca'.'$uid');
}

Обсуждение

Неизвестный
10.10.2008, 15:19
общий
Может и всё в порядке, но она объявлена дважды: в 13 и 29 строках файла. Если это не так приведите полный листинг - будем разбиратся.
Неизвестный
10.10.2008, 15:34
общий
Код:
 <?php

include ("includes/connect.php");
include ("includes/tables.php");
include ("lang/rus.php");
include_once('functions/secure/sheild.php');
$conf_connect = mysql_query ("SELECT * FROM $config_table");
$conf = mysql_fetch_array ($conf_connect);

/* Функция проверки подлиности логина и пароля, и выдача Айди юзера */
function seesionform()
{
session_start();
ob_start();
setcookie("TestCookie", $user, time()+3600);
setcookie("TestCooki", $id, time()+3600);
ob_end_flush();
$_SESSION[password] = $_POST[password];
$_SESSION[login] = $_POST[login];
$password = MD5($_SESSION[password]);
$username = $_SESSION[login];
$ucc = mysql_query("SELECT * FROM userlist WHERE username='$username' AND password='$password'");
if ($ucc == true) {
$uca = mysql_fetch_array($ucc);
$_SESSION[id] = $uca[user_id];
$uid = $_SESSION[id];
}
return ('$password'.'$username'.'$ucc'.'$uca'.'$uid');
}

?>

:) воть
Код:
 include ("includes/connect.php"); 

Подключение к базе
Код:
 include ("includes/tables.php"); 
Список используемых таблиц
Код:
 include ("lang/rus.php"); 
Языковой пакет :P
Код:
 include_once('functions/secure/sheild.php'); 
Защита от sql инъекций (пробовал отключать...толку небыло)

p/s этот файл инклудится во все остальные
Неизвестный
10.10.2008, 15:42
общий
это ответ
Здравствуйте, Герасимов Виталий Владиславови!
Для анализа ошибка необходим код скрипта php.php или содержимое его 13 и 29 строк.
Скорее всего функция seesionform() объявлена в этом скрипте повторно.
Неизвестный
10.10.2008, 15:46
общий
Странно. Попробуйте все include заменить на include_once.
Неизвестный
10.10.2008, 16:12
общий
это ответ
Здравствуйте, Герасимов Виталий Владиславови!
Попробуйте переименовать. Заработает, значит где-то уже объявлена.
Неизвестный
10.10.2008, 16:17
общий
не помогло...Это может быть что вот этот файл инклудится в остальные включая шаблон? просто если напрямую то все нормально
Неизвестный
11.10.2008, 01:49
общий
это ответ
Здравствуйте, Герасимов Виталий Владиславови!
С такими вопросами следует обращаться не к специалистам по веб-программированию, а к англо-русскому словарю.
Ясно же написано, что функция seesionform() уже объявлена в файле Z:\home\site\www\php.php в строке 13.
А как бороться с этой проблемой - уже Ваш выбор. Если имена пересекаются случайно, значит следует задать другое имя. Если функция по ошибке объявляется 2 раза, одно объявление следует убрать. Как вариант, можно объявлять функцию внутри условной конструкции(см. приложение).


Приложение:
if(!function_exists('seesionform')){
function seesionform()
{
session_start();
ob_start();
setcookie("TestCookie", $user, time()+3600);
setcookie("TestCooki", $id, time()+3600);
ob_end_flush();
$_SESSION[password] = $_POST[password];
$_SESSION[login] = $_POST[login];
$password = MD5($_SESSION[password]);
$username = $_SESSION[login];
$ucc = mysql_query("SELECT * FROM userlist WHERE username='$username' AND password='$password'");
if ($ucc == true) {
$uca = mysql_fetch_array($ucc);
$_SESSION[id] = $uca[user_id];
$uid = $_SESSION[id];
}
return ('$password'.'$username'.'$ucc'.'$uca'.'$uid');
}
}
Форма ответа