Web-мастер: курс молодого бойца

После перезагрузки слетает авторизация - Ajax

 Страницы: 1 | 2
 

 Добавлено 2012-03-19 12:22:15



Сообщений: 19
Зарегистрирован: 16.01.2012

Цитировать
Ребята, здравствуйте!!! Недавно купил книгу в ней есть код, по условию которого, если пользователь авторизовался, то для него создается сессия, в которой находятся его данные. В общем все - как обычно...Но тут и встала проблема - как только страница перезагружается - ни о какой авторизации сайт и не слышал.... Помогите пожалуйста обнаружить енту пакость, которая мешает всему процессу..:

<?php

require_once('index.common.php');
  
session_start(); 
require_once(
"my.php");
require_once(
"mybaza.php");
if(isset(
$_COOKIE["session"]))
  {
  
$_SESSION[session]=$_COOKIE["session"];
  
$query1="SELECT id FROM users WHERE login='".$_SESSION[session]."' ";
  
$rez1=mysql_query($query1);
  if(
mysql_num_rows($rez1)>0)
    {
    
$_SESSION[user]=mysql_result($rez1,0);
    
$_SESSION[type]=1;
    
f_create_message_header4(1,0$_SESSION[user],"Зарегистрируйтесь и получайте скидку ".DISCOUNT."% на все товары ");
    }
  else
    {
    
$data=date('Y-m-d H:i:s');
    
$query2="INSERT INTO users SET data='".$data."',login='".$_SESSION[session]."',
           password='',type='1',visible='yes',ip='"
.f_get_ip().";' ";
    
mysql_query($query2);
    
$_SESSION[user]=mysql_insert_id();
    
$_SESSION[type]=1;
    
f_create_message_header4(1,0$_SESSION[user],"Зарегистрируйтесь и получайте скидку  ".DISCOUNT."% на все товары ");
    
f_create_message_header4(2,$_SESSION[user],0,"Зарегистрирован гостевой пользоваталь с ip=".$_SERVER[REMOTE_ADDR]);
    }  
  }
else
  {
  
$_SESSION[session]=session_id();
  
$data=date('Y-m-d H:i:s');
  
$query1="INSERT INTO users SET data='".$data."',login='".$_SESSION[session]."',
           password='',type='1',visible='yes',ip='"
.f_get_ip().";' ";
  
mysql_query($query1);
  
$_SESSION[user]=mysql_insert_id();
  
$_SESSION[type]=1;
  
$_SESSION[memory]=1;
  
f_create_message_header4(1,0$_SESSION[user],"Зарегистрируйтесь и получайте скидку ".DISCOUNT."% на все товары ");
  
f_create_message_header4(2,$_SESSION[user],0,"Зарегистрирован гостевой пользоваталь с ip=".$_SERVER[REMOTE_ADDR]);
  }

setcookie("session",$_SESSION[session],strtotime("now+365 days")); 
$query01="SELECT vizits FROM users WHERE id='".$_SESSION[user]."' ";
$rez01=mysql_query($query01);
$query02="UPDATE users SET vizits='".(mysql_result($rez01,0)+1)."' WHERE id='".$_SESSION[user]."' ";
mysql_query($query02);  
$_SESSION[ip]=$_SERVER['REMOTE_ADDR'];

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
    <head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta http-equiv="expires" content="Fri , 2 Jun  2006 10:00:00 GMT">
<meta name=keywords content="Arduino, робототехника">
<meta name=description content="Arduino, робототехника">
<meta http-equiv=pragma content=no-cache>
<meta http-equiv=Expires content="-1">
<meta http-equiv=Cache-Control content=no-cache>
<title>Интернет-магазин робототехники</title>
<link rel="StyleSheet" type="text/css" href="css/site.css">
<link rel="stylesheet" type="text/css" href="epoch_v106_ru/epoch_styles.css" /> 

<link rel="SHORTCUT ICON" href="http://www.magazin.ru/favicon.ico">

<?php $xajax->printJavascript(''); ?>
<script type="text/javascript" src="js/tools.js"></script>
<script type="text/javascript" src="epoch_v106_ru/epoch_classes.js">
var calendar1;
var calendar2;
</script>
<script type="text/javascript">
function time_go()
  {
  setTimeout("time_go();",30000);
  if(document.getElementById("flag_ajax").value=="no")
   {
   var str1="<img src='img/load.gif'> загрузка";
   document.getElementById("header4").innerHTML=str1;
   xajax_Timer1(document.getElementById("flag_time1").value);
   }
  return;
  }  
</script>
<script>
function Flag()
  {
  this.status=0;
  this.id=0;
  this.over=0;
  }
var flag1=new Flag(); 
function move1(event)
  {
  if(flag1.status==1)
    {
    if(document.getElementById("windowdrag").style.visibility=="visible")
      {      
      if (!event)event=window.event; 
      document.getElementById("windowdrag").style.left=event.clientX+5+"px";
      var dy=(document.all)?document.documentElement.scrollTop:window.pageYOffset;
      document.getElementById("windowdrag").style.top=event.clientY+dy+"px";
      }
    }
  }

function end1() 
  {
  
  document.getElementById("windowdrag").style.visibility="hidden";
  if(flag1.status==1 && flag1.over==1)
    {flag1.status=0;xajax_Add_To_Korzina(flag1.id);flag1.id=0;}
  else
    {flag1.status=0;flag1.id=0;}  
  }
function no() 
  {return false;}
document.onmousemove=move1;
document.onmouseup=end1;
document.ondragstart=no;
document.onselectstart=no;

</script>
</head>

<body name=body1 id=body1 onload="xajax_MainMenu(1);time_go();" style="-moz-user-select: none;">

<!--<body name=body1 id=body1 
<?php if($_SESSION[memory]==&& $_SESSION[type]>1
        echo 
'onload="time_go();xajax_Vhod(xajax.getFormValues(\'FormVhod\'));"'
      else 
        echo 
'onload="time_go();xajax_MainMenu(1);"';

?> style="-moz-user-select: none;">-->

<!-- форма для хранения статуса  свободной линии для получения сообщений -->
<form name='Flags' id='Flags'>
<input type=hidden name='flag_ajax' id='flag_ajax' value='no'> <!-- вид.корзины подробно -->
<input type=hidden name='flag_korzina' id='flag_korzina' value='no'> <!-- вид.корзины подробно -->
<input type=hidden name='flag_time1' id='flag_time1' value='<?php echo $_SESSION[user]; ?>'> <!-- вид.корзины подробно -->
</form>
<!-- шапка -->
<div id=header1 style="background-color:transparent">
<center><img src="img/logo.png" align=left>
<br><br><b>Пример сайта из книги Петина В.А. <br>
Сайт на Ajax под ключ. Готовое решение для интернет-магазина.  <br>
БХВ-ПЕТЕРБУРГ , 2011 </b><br><br><br></center>
</div><br>
<div style='background-color:transparent;'>
<div id=header2>

  <!-- вход -->
  <form name="FormVhod" id="FormVhod" action="javascript:void(null);" onsubmit="
                xajax.$('ButtonFormVhod').disabled=true;
                  xajax.$('ButtonFormVhod').value='Подождите...';
                xajax_Vhod(xajax.getFormValues('FormVhod'));">
  Логин <input type="text" id="login" name="login" value='' size=10 maxlength=10>
  Пароль <input type="password" id="password" name="password" value='' size=10 maxlength=10>
  <input type="submit" id="ButtonFormVhod" value='Вход ->'>
  <!-- <input type="checkbox" value=1 id="memory" name="memory"> Запомнить-->
  </form>
  </div>
  <div id=header4>Нет сообщений</div>
<div id=header3>Интернет-магазин робототехники</div>
<br>
</div>
<!-- ----- рабочие-страницы 2 ----------------- -->
<table width=100%>
  <tr>
<!-- левое -->    
    <td width=25% valign=top>
     <!-- категории -->
      
      <div id=leftcaption1><table></table></div>
      <div id=left1 class=divs1><table></table></div>
     <!-- акции -->
      <div id=leftcaption2><table></table></div>
      <div id=left2><table></table></div>
     <!-- статистика -->
      <div id=leftcaption3><table></table></div>
      <div id=left3><table></table></div>
     <!-- контакты -->
      <div id=leftcaption4><table></table></div>
      <div id=left4><table></table></div>
    </td>
    <td width=1% ></td>
<!-- среднее -->    
    <td width=53% valign=top>
     <!-- корзина -->
      <div id=centercaption1><table></table></div>
      <div id=center1><table></table></div>
     <!-- блоки фильтр + витрина, список кратко + постранично -->
      <div id=centercaption2><table></table></div>
      <div id=center2><center><img src='img/zagruzka.gif'></center></div>
      <div id=centercaption3><table></table></div>
      <div id=center3><table></table></div>
      <div id=centercaption4><table></table></div>
      <div id=center4><table></table></div>
     <!-- блок подробно -->
      <div id=centercaption5><table></table></div>
      <div id=center5><table></table></div>
    </td>
    <td width=1%></td>
<!-- правое -->    
    <td width=20% valign=top>
     <!-- курсы валют -->
      <div id=rightcaption1><table></table></div>
      <div id=right1><table></table></div>
     <!-- Корзина (кол-во, цена) -->
      <div id=rightcaption2><table></table></div>
      <div id=right2><table></table></div>
     <!-- У партнеров -->
      <div id=rightcaption3><table></table></div>
      <div id=right3><table></table></div>
     <!-- контакты -->
      <div id=rightcaption4><table></table></div>
      <div id=right4><table></table></div>
    </td>
 </tr>
</table>

<!-- ----- всплывающие страницы <img src="img/loading.gif">-->
<div id='windowdop'>дополнительное окно
</div>    
<div id='windowdrag'>дополнительное окно
</div>    
        
<!-- подвал -->
<br>
<div id=bottom>
    <br>
    <?php
    $query1
="SELECT * FROM link_partners WHERE visible='yes' ORDER BY sort ASC";
    
$rez1=mysql_query($query1);
    
$text1="<center>";
    while(
$row1=mysql_fetch_assoc($rez1))
      {
      
$text1.="<a href='".$row1[link]."' target='_blank'>".$row1[name]."</a>        ";
      }
    
$text1.="</center>";
    echo 
$text1;
    
?>
 
</div>
     
</body>
</html>

И сразу вдогонку еще один вопрос, не вредно ли что весь контент подгружается динамически только в одну страницу?
Наверх  Посмотреть профиль   Отредактировано модератором evgenijj 19.03.2012

 Добавлено 2012-03-19 18:05:53
evgenijj
Модератор




Сообщений: 1371
Зарегистрирован: 09.11.2007

Цитировать
Ну, во-первых, код типа $_SESSION[session] вызовет ошибку типа Undefined Constant session. PHP будет воспринимать session как неопределенную константу, а не как индекс массива. Это обращение в пустоту.
Во-вторых, нет кода функции f_create_message_header4(). Если эта функция что-то выводит в браузер или отправляет заголовки - после этого cookie уже установить нельзя:
setcookie("session",$_SESSION[session],strtotime("now+365 days"));
Я подчеркиваю - не только не должна ничего выводить, но и не должна отправлять заголовки. Это ограничение cookie.

Включай показ ошибок и исправляй все косяки.
Ничего не работает! Что делать??? Поиск ошибок и отладка
Цитата
В большинстве случаев совершенно бесполезно вываливать на форум свой код, и спрашивать - "В чём ошибка?". На форуме не сидят волшебники вперемешку с телепатами. И гадалок с прорицателями - тоже нет. Поэтому отгадывать, в чём, теоретически, может быть ошибка, никто не будет. Ошибку найти может только хозяин программы. На своём сервере. Со своими настройками и опечатками. Поэтому локализовать ошибку - найти место, где она происходит, определить тип ошибки - можно только самостоятельно. А вот исправить её на форуме помогут. Если не получится самому.
Цитата
Максимально упрощать пример. Если у вас не работает программа, которая рисует форму,получает данные, записывает данные формы в базу и выводит их снова, то разбейте программу на составляющие и выполняйте по очереди.
Если у вас не работает сложная подпрограмма определения работоспособности кук - напишите сначала тест в две строчки чтобы убедиться, что вы хотя бы можете выставлять и читать куку.

P.S. Этот код - один сплошной косяк. Автору книги следовало бы самому сперва прочитать прилиный учебник, прежде чем других учить.


Денежные купюры пронумерованы для того, чтобы когда-нибудь я мог сложить их все одну к одной, по порядку.
Наверх  Посмотреть профиль   Сайт автора Отредактировано автором 19.03.2012

 Добавлено 2012-03-19 18:44:30



Сообщений: 19
Зарегистрирован: 16.01.2012

Цитировать
Жень,здравствуй! Очень рад что откликнулся!!! В том то и дело, что сайт в целом работает нормально и ошибок не выдает
Наверх  Посмотреть профиль    

 Добавлено 2012-03-19 18:49:52



Сообщений: 19
Зарегистрирован: 16.01.2012

Цитировать
evgenijj
По поводу автора - некто Петин, далее цитата: "Профессиональный программист, имеет большой практический опыт создания сайтов с использованием..." и далее огромный перечень языков, а также огромной кучей книг, которые он написал...
Наверх  Посмотреть профиль    

 Добавлено 2012-03-19 18:54:07



Сообщений: 19
Зарегистрирован: 16.01.2012

Цитировать
Пример сайта, построенного по этой книгеwww.goodtovars.ru
Наверх  Посмотреть профиль    
 Страницы: 1 | 2
 
Быстрый ответ
 
Цвет шрифта: Закрыть все теги
Сообщение
Защитный код