Проблема с Cookies

Статус
Закрыто для дальнейших ответов.

RoamingFire

Well-Known Member
Регистрация
04.01.2008
Сообщения
145
Короче реально замучился... Такая вот фигня, в одном скрипте могу прочитать куки в другом нет!
Кусок кода в котором не могу прочитать:
if (isset($_COOKIE["rsgb_adm"]))
{
if ($_COOKIE["rsgb_adm"] == md5(md5($CFG["adm_pswd"])))
{
echo "<B>Администраторские настройки:</B><BR>";
echo "<A href = \"edit.php?id=".$row["id"]."\">Редактировать</A> <A href = \"delete.php?id=".$row["id"]."\">Удалить</A><BR>";
echo "IP: ".$row["ip"];
}
}
На заметку - это очень большой скрипт, и уже выведено много хтмл кода перед чтением кукиз(может от этого что то зависит?)
Вот кусок кода в котором читает кукиз:
Код:
if (!isset($_COOKIE["rsgb_adm"]) || $_COOKIE["rsgb_adm"] != md5(md5($CFG["adm_pswd"])))
  {
	if (!isset($_POST["login"]))
	{
	  echo "<HTML>";
	  echo "<HEAD>";
	  echo "<TITLE>Панель администратора</TITLE>";
	  echo "<LINK rel = \"stylesheet\" type = \"text/css\" href = \"style.css\">";
	  echo "</HEAD>";
	  echo "<BODY>";
	  echo $_COOKIE["rsgb_adm"]."<BR>"; // вывел для проверки
	  echo md5(md5($CFG["adm_pswd"])); // это тоже
	  echo "<DIV align = \"center\">";
	  echo "<B>Вход в панель администратора</B>";
	  echo "<FORM action = \"admin.php\" method = \"POST\">";
	  echo "<TABLE>";
	  echo "<TR><TD>Пароль:</TD><TD><INPUT type = \"password\" name = \"adm_pswd\"></TD></TR>";
	  echo "<TR><TD colspan = \"2\" align = \"center\"><INPUT type = \"submit\" value = \"Войти\" name = \"login\"></TD></TR>";
	  echo "</TABLE>";
	  echo "</FORM>";
	  echo "</DIV>";
	  echo "</BODY>";
	  echo "</HTML>";
	}
	else
	{
	  if ($_POST["adm_pswd"] == $CFG["adm_pswd"])
	  {
		setcookie("rsgb_adm",md5(md5($CFG["adm_pswd"])),time()+900);
		HEADER("Location: index.php");
	  }
	  else
	  {
		echo "<HTML>";
		echo "<HEAD>";
		echo "<TITLE>Панель администратора</TITLE>";
		echo "<LINK rel = \"stylesheet\" type = \"text/css\" href = \"style.css\">";
		echo "</HEAD>";
		echo "<BODY>";
		echo "<DIV align = \"center\">";
		echo "<B>Не верный пароль! <A href = \"admin.php\">Повторить</A>.</B>";
		echo "</DIV>";
		echo "</BODY>";
		echo "</HTML>";
	  }
	}
  }
  else
  {
	echo "все ок, куки есть";
  }
Помогите, я уже пол-часа мучаюсь...
 

ZitosS_32

Совесть
Регистрация
12.03.2006
Сообщения
852
Вообще на куках делать, это ужасно! Нужны сессии!
Код:
function logout()
{
		setcookie("rsgb_adm",md5(md5($CFG["adm_pswd"])),time()-900);
		HEADER("Location: admin.php");
}

if (empty($_COOKIE["rsgb_adm"]))
  {
	if (empty($_POST["login"]))
	{
	  echo "<HTML>";
	  echo "<HEAD>";
	  echo "<TITLE>Панель администратора</TITLE>";
	  echo "<LINK rel='stylesheet' type='text/css' href='style.css'>";
	  echo "</HEAD>";
	  echo "<BODY>";
	  echo $_COOKIE["rsgb_adm"]."<BR>"; // вывел для проверки
	  echo md5(md5($CFG["adm_pswd"])); // это тоже
?>
  <DIV align='center'>
  <B>Вход в панель администратора</B>
  <FORM action = 'admin.php' method = 'POST'>
	<TABLE>
	  <TR><TD>Пароль:</TD><TD><INPUT type='password' name='adm_pswd'></TD></TR>
	  <TR><TD colspan='2' align='center'><INPUT type ='submit' value ='Войти' name='login'></TD></TR>
	</TABLE>
  </FORM>
  </DIV>
</BODY>
</HTML>
<?
	}
	else
	{
	  if ($_POST["adm_pswd"] == $CFG["adm_pswd"])
	  {
		setcookie("rsgb_adm",md5(md5($CFG["adm_pswd"])),time()+900);
		HEADER("Location: index.php");
	  }
	  else
	  {
?>
<HTML>
<HEAD>
<TITLE>Панель администратора</TITLE>
<LINK rel='stylesheet' type='text/css' href='style.css'>
</HEAD>
<BODY>
  <DIV align='center'>
	<B>Не верный пароль! <A href = 'admin.php'>Повторить</A>.</B>
  </DIV>
</BODY>
</HTML>
<?
	  }
	}
  }
  else
  {
	if($_COOKIE["rsgb_adm"] !== md5(md5($CFG["adm_pswd"]))) logout();
   $_COOKIE["rsgb_adm"] = (isset($_COOKIE["rsgb_adm"])) ? $_COOKIE["rsgb_adm"] : false;
	.....
  }
Я всё это делаю намного проще и надёжнее на сессиях
Код:
<?php 
  session_start();
/* Включим подавление ошибок для того, чтобы перенаправление работало правильно */
  include_once('../mysql/config.php');
/* И файл конфигурации, созданный тогда же */
/* Инициализируем сессию */
  $link = mysql_connect($DB_host, $DB_user, $DB_pass);
/* Подключимся к серверу MySQL (помните, мы объявляли эти переменные в файле config.php) */
  mysql_select_db($DB_name, $link);

  mysql_query("SET NAMES 'cp1251'");
/* Объясним серверу MySQL, с какой базой данных мы хотим работать */

  $name = mysql_escape_string($_POST['name']);
/* Данные с формы мы будем получать методом POST и тут же экранировать опасные символы */
  $password = md5($_POST['password']);
/* А пароль просто захешируем функцией md5 */
  $result = mysql_query("SELECT * FROM users WHERE name='{$name}' AND password='{$password}'");
/* Получим из базы данных значения полей login и password таблички users, которые бы соответствовали данным, полученным с формы */
  if(mysql_num_rows($result) == 1)
/* Если мы получили только одну запись */
  {
	 $user = mysql_fetch_array($result);
/* Это нужно, чтобы перевести результаты запроса в удобный для работы вид */
	 if($user['name'] == $name && $user['password'] == $password)
/* Если данные, полученные из базы данных соответствуют полученным из формы */
	 {
		$_SESSION['name'] = $user['name'];
		$_SESSION['password'] = $user['password'];
/* Добавим в сессию эти данные */
	 }
	 else
/* В любом другом случае перенаправим на страницу с ошибкой */
	 {
		header("Location: ../error.php");
		exit;
	 }
  }
  else
  {
	 header("Location: ../index.php?page=author&error");
	 exit;
  }

/* Если всё хорошо - отключимся от базы данных */
  mysql_close($link);
/* И вернём пользователя на главную страницу */
  header("Location: ../index.php");
?>
Пример взял скрипт одного очень хорошего человека!
А потом ещё и проверку сделать по второму разу надо )))
 

RoamingFire

Well-Known Member
Регистрация
04.01.2008
Сообщения
145
Спасибо тебе большое! Буду работать с сессиями!
 

ZitosS_32

Совесть
Регистрация
12.03.2006
Сообщения
852
Работает? Я просто как всегда не проверял )))
Или ты решил сделать на сессиях?
 
Статус
Закрыто для дальнейших ответов.
Верх Низ