Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сессии регистрация/авторизация
 
 автор: evgen_17   (19.02.2005 в 01:30)   письмо автору
 
 

S KODIROVKOY NICHOGO PODELAT' NE MOGU!!!
Я пишу код следующего содержания:

<?


    
require('main.php');

session_start();

    if (!isset(
$_SESSION['uid']))
    {
       
$_SESSION['uid'] = $_POST['uid'];
       
$_SESSION['pwd'] = $_POST['pwd'];
    }

    
$uid $_SESSION['uid'];
    
$pwd $_SESSION['pwd'];

    
db_connect();

    
$res mysql_query("SELECT * FROM users WHERE uid='$uid' AND pwd='$pwd' and status='active'");
    
$re  mysql_fetch_array($res);

    if(
mysql_num_rows($res) != 0) {

      include(
INC_DIR."header.php");

      echo 
"<center><br><b>Здравствуйте, $uid.</b></center>";

    } else {

    
    unset(
$_SESSION['uid']);
    unset(
$_SESSION['pwd']);

    echo 
"<center><br><b>Неверный логин или пароль!</b></center>";
    include(
INC_DIR."login.php");

    }


    include(
INC_DIR."footer.php");
    
db_disconnect();
?>
<a href="member2.php">NEXT</a>

Эта страница грузится, когда User зарегился и вош_л в систему. Но ведь будут и другие страницы, на которых нужно будет сохранить сессию. Какой код нужно написать (например в файле member2.php, чтобы перейдя по ссылке привед_нной после кода открылась страница с приветствием пользователя? S kodirobkoy problemy!!!

   
 
 автор: isset   (19.02.2005 в 01:48)   письмо автору
 
   для: evgen_17   (19.02.2005 в 01:30)
 


<?
session_start
(); 
echo 
$_SESSION['uid'];
?>

   
 
 автор: evgen_17   (19.02.2005 в 02:03)   письмо автору
 
   для: isset   (19.02.2005 в 01:48)
 

Ne rabotaet! V chem mojet byt' problema?
оЕ ТБВПФБЕФ!

   
 
 автор: cheops   (19.02.2005 в 02:13)   письмо автору
 
   для: evgen_17   (19.02.2005 в 02:03)
 

А какие симптомы? Что-нибудь выводится в окно браузера или просто пустой массив $_SESSION?

   
 
 автор: evgen_17   (19.02.2005 в 02:17)   письмо автору
 
   для: cheops   (19.02.2005 в 02:13)
 

Voobshe nichego ne vyvoditsa. Prosto pustaya stranica... Chto delat'?
нПЦЕФ ЬФП ЛБЛПК-ОЙВХДШ ЗМАЛ У php.ini ПРСФШ?

   
 
 автор: cheops   (19.02.2005 в 10:47)   письмо автору
 
   для: evgen_17   (19.02.2005 в 02:17)
 

Хм... попробуйте вывести содержимое суперглобального массива $_SESSION
<?php
  start_session
();
  
print_r($_SESSION);
?>

В нём что-нибудь есть?

   
 
 автор: evgen_17   (19.02.2005 в 10:58)   письмо автору
 
   для: cheops   (19.02.2005 в 10:47)
 

Хорошо попробую...

Это на всякий случай, если не заработает, может так будет понятней в чём проблема?
Вот код из вашего "Самоучителя PHP 5.0"


Вот этот пример работает.

<?
session_srart
();
$_SESSION['username'] = maksim";
echo "
Привет,' .$_SESSION['username']."<br>";
?>
<a href="page2.php">На следующую страницу</a>


Выводит:
"Привет, maksim.
На следующую страницу."

А вот этот уже нет.

<?
session_start
();
echo 
$_SESSION['username']. ', ты пришёл на следующую страницу этого                                 сайта!';
eco("<br>");
?>
<a href="page3.php">На следующую страницу</a>


Выводит:
" , ты пришёл на следующую страницу этого сайта!
На следующую страницу."

В чём может быть проблема? Может сам код скрипта или настройки php.ini?

   
 
 автор: cheops   (19.02.2005 в 11:23)   письмо автору
 
   для: evgen_17   (19.02.2005 в 10:58)
 

Пожалуй следует настроить в php.ini директорию для записей сессий. Как это сделать описывается в теме http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=104. Тогда вы сможете визуально контролировать - регистрируется сессия или нет.

   
 
 автор: evgen_17   (19.02.2005 в 19:34)   письмо автору
 
   для: cheops   (19.02.2005 в 11:23)
 

У меня и так путь прописан. Причём файлы вида sess_3b81ec7d40702df82ead62a3d02d55c8 записываются. Но на что это влияет и зачем? Насколько я понял, если файлы там записываются, то они и регистрироваться должны...

И ещё, если можно, напишите простейший скрипт регистрации/авторизации.
Просто, чтоб я понял как это происходит

PS Желательно так, чтобы после авторизации можно было перейти на другую страницу с сохранённой сессией. (Без авторизации на эту страницу не попасть)

   
 
 автор: cheops   (19.02.2005 в 20:56)   письмо автору
 
   для: evgen_17   (19.02.2005 в 19:34)
 

Проблеме регистрации/авторизации посвящена специальная статья
http://www.softtime.ru/info/articlephp.php?id_article=34
большое число тем форума, среди которых наиболее интересные следующие
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=80
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=1347
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=1359
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=1190

   
 
 автор: cheops   (19.02.2005 в 20:59)   письмо автору
 
   для: evgen_17   (19.02.2005 в 19:34)
 

>У меня и так путь прописан. Причём файлы вида
>sess_3b81ec7d40702df82ead62a3d02d55c8 записываются. Но на
>что это влияет и зачем? Насколько я понял, если файлы там
>записываются, то они и регистрироваться должны...
Так, а внутри файла что?

   
 
 автор: evgen_17   (19.02.2005 в 21:02)   письмо автору
 
   для: cheops   (19.02.2005 в 20:59)
 

йФБЛ, ЮФПВЩ ЧУЈ ВЩМП РПОСФОП ЧЩМПЦХ чуе РПДТПВОПУФЙ.
ьФБ УФТБОЙГБ ЪБЗТХЦБЕФУС РПУМЕ ЧЧПДБ мПЗЙОБ Й рБТПМС...
<?


require('/usr/SERVERS/PRIMARY/GameServer/reg/main.php');

session_start();

if (!isset($_SESSION['uid']))
{
$_SESSION['uid'] = $_POST['uid'];
$_SESSION['pwd'] = $_POST['pwd'];
}

$uid = $_SESSION['uid'];
$pwd = $_SESSION['pwd'];
print_r($_SESSION);

db_connect();

$res = mysql_query("SELECT * FROM users WHERE uid='$uid' AND pwd='$pwd' and status='active'");
$re = mysql_fetch_array($res);

if(mysql_num_rows($res) != 0)
{

include(INC_DIR."header.php");

echo "<center><br><b>ъДТБЧУФЧХКФЕ $uid, ЦЕМБЕН РТЙСФОП РТПЧЕУФЙ ЧТЕНС.</b></center>";

}
else
{


unset($_SESSION['uid']);
unset($_SESSION['pwd']);

echo "<center><br><b>оЕЧЕТОЩК МПЗЙО ЙМЙ РБТПМШ!</b></center>";
include(INC_DIR."login.php");

}


include(INC_DIR."footer.php");
db_disconnect();




?>

<a href="member2.php">дБМЕЕ</a>

ч ПЛОП ВТБХЪЕТБ ЧЩЧПДЙФУС УМЕДХАЭЕЕ:

Array ( [uid] => User [pwd] =>111)

ъДТБЧУФЧХКФЕ User!!!
дБМЕЕ

рПУМЕ ОБЦБФЙ ОБ УУЩМЛБ "дБМЕЕ" ЪБЗТХЦБЕФУС ЬФПФ УЛТЙРФ:

<?
session_start();
$_SESSION['uid'] = $uid;

$_SESSION['pwd'] = $pwd;

echo ("чЩ, $uid");
echo "<br>";
print_r($_SESSION);
?>

ч ПЛОП ВТБХЪЕТБ ЧЩЧПДЙФУС УМЕДХАЭЕЕ:

чЩ,
Array ( [uid] => [pwd] => )

лУФБФЕ УЛТЙРФЩ ЙУРЩФЩЧБАФУС Ч ВТБХЪЕТЕ KONQUEROR (Mozill) ОБ Linux RedHat 9.0
нПЦЕФ ЬФ ЬФПЗП ЛБЛ-ФП ЪБЧЙУЙФ?
рТПЧЕТЛБ

   
 
 автор: cheops   (19.02.2005 в 21:08)   письмо автору
 
   для: evgen_17   (19.02.2005 в 21:02)
 

А нет, я имею ввиду файлы sess_3b81ec7d40702df82ead62a3d02d55c8 - в них помещается переменная?

   
 
 автор: evgen_17   (19.02.2005 в 21:36)   письмо автору
 
   для: cheops   (19.02.2005 в 21:08)
 

Да в них помещается переменная, выглядит следующим образом

uid|"User";pwd|"111";

Я выше код привёл с подробным объяснением того, что происходит. варианты есть?

   
 
 автор: cheops   (20.02.2005 в 13:22)   письмо автору
 
   для: evgen_17   (19.02.2005 в 21:36)
 

Стоп! А почему у вас во втором файле
<?php
  session_start
();
  
$_SESSION['uid'] = $uid;
  
$_SESSION['pwd'] = $pwd;
?>

может имеется ввиду
<?php
  session_start
();
  
$uid $_SESSION['uid'];
  
$pwd $_SESSION['pwd'];
?>

   
 
 автор: evgen_17   (20.02.2005 в 18:19)   письмо автору
 
   для: cheops   (20.02.2005 в 13:22)
 

Вставил Ваш код, модифицировал до такого:

<?php 
session_start
(); 
$uid $_SESSION['uid']; 
$pwd $_SESSION['pwd']; 
print_r($_SESSION);
echo (
"$uid");
?> 

Выводит в браузер:
Array ()

Я слышал что-то про регистрацию переменных (session_register) если написать вот такой код:

<?php 
session_start
(); 
session_register('uid','pwd');
$uid $_SESSION['uid']; 
$pwd $_SESSION['pwd']; 
print_r($_SESSION);
echo (
"$uid");
?> 


то выводится в браузер:
Array ([uid] => [pwd] => )


Данный пример (из вашего Инфо) тоже не работает!

<html>
<body>
<h1> Страница регистрации </h1>
  <input type=hidden name=action value=post>
  <form method="post" action="page1.php">
   <table>
    <tr><td>Имя:</td>
    <td><input type="text" name=name value='<? echo $name?>'></td></tr>
    <tr><td colspan=2><input type=submit value='Enter'>
    </td></tr>
   </table>
  </form>
</body>
</html>



<?php
  session_start
();
  
$_SESSION['username'] = $name;
  echo 
'Привет, '.$_SESSION['username']."<br>";
?>



<?php
  session_start
();
  echo 
$_SESSION['username'].' , ты пришел на другую страницу этого сайта!';
  echo(
"<br>");
?>


Если в первом скрипте исправить action="page1.php" на action="page2.php", то в окно браузера выводится:
, ты пришел на другую страницу этого сайта!

Это очем-нибудь Вам говорит? Ну не может же быть так, чтобы решения этой проблемы не было!!!???
Кстате, я говорил, что при установке PHP отключил установку LIBXML (--disable-libxml). Может это как-нибудь повлеяло? Или вообще может какие-нибудь особые параметры при установке вводить нужно?
Напишите, пожалуйста, то какие надо задавать параметры при установке PHP (начальной) Или лучше вообще написать те установки которые Вы писали при установке (если помните)... Может мне копию своего php.ini прислать, может быть там что-нбудь не так настроено???

   
 
 автор: glsv (Дизайнер)   (20.02.2005 в 19:57)   письмо автору
 
   для: evgen_17   (20.02.2005 в 18:19)
 

Первый листинг нужно переписать так:

<?
session_start
(); 
$_SESSION['uid']="11"
$_SESSION['pwd']="22"
print_r($_SESSION);
echo (
"$uid");
?>

Тогда он выведет массив $_SESSION.


Файл page1.php должен выглядеть так:

<?php
  session_start
();
  
$_SESSION['username'] = $_POST["name"];
  echo 
'Привет, '.$_SESSION['username']."<br>";
?>


Тогда заработает страница page2.php

<?php
  session_start
();
  echo 
$_SESSION['username'].' , ты пришел на другую страницу этого сайта!';
  echo(
"<br>");
?>

В форме имя обработчика должно быть action=page1.php - именно в нем регистрируется сессионная переменная. Если сразу указать action=page2.php, то сессионная переменная не будет зарегистрирована и соответственно не будет выведено ее значение.

   
 
 автор: evgen_17   (20.02.2005 в 21:40)   письмо автору
 
   для: glsv (Дизайнер)   (20.02.2005 в 19:57)
 

page2.php не работает. И вообще я правильно понимаю???
Если page1.php (см. выше) получила перемнную $_POST["name"] (например Вася), а команда echo 'Привет, '.$_SESSION['username']."<br>"; Выводит в браузер "Привет, Вася", значит сессии работают?
Ну а что тогда нужно написать в фаеле page1.php, чтобы перейти на страницу page2.php и увидеть в окне браузера
"Вася, ты пришел на другую страницу этого сайта!"

   
 
 автор: glsv (Дизайнер)   (20.02.2005 в 23:25)   письмо автору
 
   для: evgen_17   (20.02.2005 в 21:40)
 

>значит сессии работают?
По крайней мере присваиваются.

Ссылку напишите
<a href="page2.php">Ссылка</a>

   
 
 автор: evgen_17   (21.02.2005 в 11:47)   письмо автору
 
   для: glsv (Дизайнер)   (20.02.2005 в 23:25)
 

Дизайнер, Вы меня недооцениваете... Как писать ссылки на другие страницы я знаю. А вот каким должно быть содержание файла??? (см. новую тему)

   
 
 автор: glsv (Дизайнер)   (21.02.2005 в 13:23)   письмо автору
 
   для: evgen_17   (21.02.2005 в 11:47)
 

> вот каким должно быть содержание файла???
Page2.php? Так я же его приводил двумя постами выше…

   
 
 автор: Денис   (16.03.2005 в 00:13)   письмо автору
 
   для: evgen_17   (21.02.2005 в 11:47)
 

я столкнулся с той же проблемой. Целый день провел над проблемой, делал всевозможные настройки и исправления путей в httpd.conf. Потом, когда перезагрузил компьютер, все настроилось и этот самый пример из учебника работает. Могу привести листинг конфигурационного файла ,в котором те настройки, которые могут тебе пригодиться.

   
 
 автор: evgen_17   (16.03.2005 в 21:40)   письмо автору
 
   для: Денис   (16.03.2005 в 00:13)
 

Спасибо, но я уже давно разобрался...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования