Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2008, 23:30   #1
limon
Пользователь
 
Регистрация: 06.09.2008
Сообщений: 35
По умолчанию Сессии

Вобщем доюрался до сессий, в целом работу сессий понял, но не смовсем получается на пркатике. А вот и вопрос: имеется файл index.php
PHP код:
<?php
$user 
$_POST['user'];
$pass $_POST['pass'];
session_start();
$_SESSION['user'] = $user;
$_SESSION['pass'] = $pass;
?>
<form action="admin.php" method="post" align="center">
<pre>
<b>Username: </b><input type="text" name="user"><br />
<b>Password: </b><input type="password" name="pass"><br />
<input type="submit" value="[login]">
</pre>
</form>
Файл admin.php у меня явно не верный
PHP код:
<?php
session_start
();
if (
$_SESSION['user'] == 123456 AND $_SESSION['pass'] == 123456){
    echo 
"ok";
} else {
    echo 
"no";
}
какое верное содердимое будет?
limon вне форума Ответить с цитированием
Старый 29.11.2008, 00:24   #2
Рустам
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 260
По умолчанию

файл admin.php - нормальный
Код:
<?php 
session_start(); 
if ($_SESSION['user'] ==123456 AND $_SESSION['pass'] ==123456){ 
    echo "ok"; 
} else { 
    echo "no";
а вот с index.php посмотри:
1-у тебя $user и $pass получаются из формы, вот только форма у тебя значения этих переменных передает в admin.php а они у тебя в index.php получаются...
Хорошо не там, где нас нет, а там, где нас еще небыло!!!

Последний раз редактировалось Рустам; 29.11.2008 в 00:37.
Рустам вне форума Ответить с цитированием
Старый 29.11.2008, 00:38   #3
Рустам
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 260
По умолчанию

вот такой вариант:
index.php
Код:
<html>
<head>
<title></title>
</head>
<body>
<?php
if (!ISSET($user)&&!ISSET($pass))
{
?>
<form action="index.php" method="post" align="center">
<pre>
<b>Username: </b><input type="text" name="user"><br />
<b>Password: </b><input type="password" name="pass"><br />
<input type="submit" value="[login]">
</pre>
</form>
<?
}
else
{
$user = $_POST['user'];
$pass = $_POST['pass'];
session_start();
$_SESSION['user'] = $user;
$_SESSION['pass'] = $pass;
echo "<META HTTP-EQUIV='Refresh' CONTENT='0;url=admin.php'>";
}
?>
</body>
</html>
Хорошо не там, где нас нет, а там, где нас еще небыло!!!
Рустам вне форума Ответить с цитированием
Старый 29.11.2008, 00:44   #4
Рустам
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 260
По умолчанию

В данном случае если $user и $pass пустые, то получим форму, которая, в свою очередь, передаст значения полей в index.php. А тут уже проще:
если что-то пришло, то заводи это в сессию и дуй на страницу admin.php, которая проверит на "валидность" данные, переданные "по сессии" и скажет тебе yes или no
Хорошо не там, где нас нет, а там, где нас еще небыло!!!
Рустам вне форума Ответить с цитированием
Старый 29.11.2008, 03:01   #5
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

Цитата:
Сообщение от Рустам Посмотреть сообщение
Код:
<?php
if (!ISSET($user)&&!ISSET($pass))
....
?>
Это условие будет выполняться ВСЕГДА. Потому что $user и $pass никогда не будут заданы.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 29.11.2008, 08:06   #6
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Года два назад делал.
Форма ввода:
Код:
<form method="POST" action="login.php">
    Вход: <br>
    Логин  <input name="x_user" type="text" SIZE="6"> 
    Пароль <input name="x_pass" type="text" SIZE="6">
    <input type="submit" value=" Ok ">
    </font>
    </form>
Код файла login.php (убрал не нужное вам):
Код:
<?php
include('config.php');
IF (($x_user==$Mainlogin)&&($x_pass==$Mainpass)) 
    {
    session_start();
    session_register("a_user");
    session_register("a_pass");
    $a_user=$x_user;
    $a_pass=$x_pass;
    header('Location: admin/admin.php');
    }
    else {header('Location: Error.php');}  
?>
Код проверки на каждой странице сайта, где необходимо контролировать доступ к чему-либо:
Код:
<?php
include('../config.php');
session_start();
if (!((isset($a_user))AND(isset($a_pass)))) header('Location: ../Error.php');
if (!(($a_user==$Mainlogin)&&($a_pass==$Mainpass))) header('Location: ../Error.php');
?>
В файле config.php хранятся переменные $Mainlogin и $Mainpass - это логин и пасс админа.
zetrix вне форума Ответить с цитированием
Старый 29.11.2008, 11:16   #7
limon
Пользователь
 
Регистрация: 06.09.2008
Сообщений: 35
По умолчанию

Немного видоизменил последний вариант, но всё равно не работает. Вот собственно код:
index.php
PHP код:
<?php
$user 
$_POST['user'];
$pass $_POST['pass'];
session_start();
$_SESSION['user'] = $user;
$_SESSION['pass'] = $pass;
?>
<form action="admin.php" method="post" align="center">
<pre>
<b>Username: </b><input type="text" name="user"><br />
<b>Password: </b><input type="password" name="pass"><br />
<input type="submit" value="[login]">
</pre>
</form>
admin.php
PHP код:
<?php
IF (($user=='admin')AND($pass=='123456')) 
    {
    
session_start();
    
session_register("a_user");
    
session_register("a_pass");
    
$a_user=$x_user;
    
$a_pass=$x_pass;
    echo 
"ok";
    }
    else {
        echo 
"no";
    }  
?>
Но вот всё-таки раз говорят что у меня admin.php верный, => трабл в index.php. Подскажите чё подправить в инлексе? (Способ от Рустама не работает)
limon вне форума Ответить с цитированием
Старый 29.11.2008, 11:18   #8
wall66
Участник клуба
 
Аватар для wall66
 
Регистрация: 04.10.2008
Сообщений: 1,485
По умолчанию

всю пхп часть из индекса нужно перенести в начало файла админ ибо она у тебя попросту не выполняется
свободен...
wall66 вне форума Ответить с цитированием
Старый 29.11.2008, 11:20   #9
wall66
Участник клуба
 
Аватар для wall66
 
Регистрация: 04.10.2008
Сообщений: 1,485
По умолчанию

также у тебя нигде не определяются переменные $x_user и $x_pass
свободен...
wall66 вне форума Ответить с цитированием
Старый 29.11.2008, 11:24   #10
limon
Пользователь
 
Регистрация: 06.09.2008
Сообщений: 35
По умолчанию

Дык пхп код итак в начале, тока потом хтмл идёт
limon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расскажите про сессии Pusher PHP 3 21.02.2008 03:10