|
|
|
| Здраствуйте! Я читатель ваших книжек , и очень хотел бы чтобы вы помогли , надо сделать чтобы при логине bart и пароле bart заходил в аккуант и ему были доступны ссылки типа оплаты итд , + чтобы можно было выходить. Я тут набросал кое-что , но почему-то ?pay работает даже когда я и не зашёл в аккуант, я думаю надо наложить глобальную проверку на существование куков имени и пароля , толька как это сделать.... я пробывал через empty , но кажется не так , прошу описать в чём я ошибся . Спасибо большое.
<?
if(empty($name)){
echo"<form action=?auth method=post>
Имя посетителя : <input type=text name=name><br>
Пароль : <input type=password name=password><br>
<input type=submit value=Отправить>
</form>";
}
$a = "bart";
$b = "bart";
if ($_POST['password'] == $b && $_POST['name'] == $a) {
if(isset($_GET['auth'])){
setcookie("name",$name,time()+3600);
echo<<<HTML
Добро пожаловать $name<br>
<a href=/>Заказать домен</a>
<a href=?pay>Пополнить баланс</a>
<a href=?logout>Выйти </a>
HTML;
}
if(isset($_GET['pay'])){
echo<<<HTML
<form action="./" method="post"><input type="hidden" name="p" value="addamount">
Пополнить счет на <input type="text" value="" name="add" size="4"> $ <input type="submit" value="Добавить средства">
</form>
HTML;
}
if(isset($_GET['logout'])){
setcookie("name",$name,time()-999999);
echo "<meta http-equiv='Refresh' content='0; URL=auth.php'>";
}
}
exit;
?>
|
Пожалуйста помогите мне , над кодом прошу не смеятся, я начинающий. | |
|
|
|
|
|
|
|
для: bartik
(06.07.2006 в 02:12)
| | Можно создать файл типа acces.php в котором будут проверятся значения куков
acces.php
<?php
$name = "bart";
$pass = "bart";
if($_COOKIE['name'] != $name OR $_COOKIE['pass'] != $pass);
echo "Вы не авторизованы, авторизуйтесь пожалуйста.";
// А убивать куки можно ещё и так:
if(isset($_GET['logout']))
{
setcookie("name");
setcookie("pass");
}
?>
|
И подключать этот файл к страницам к торым разрешён доступ только авторизованым пользователям. | |
|
|
|
|
|
|
|
|
для: cheops
(06.07.2006 в 12:21)
| | очень хотелось бы увидеть, как именно правильно проверить от программиста cheops . Спасибо, тк вся загвоздка в проверки, вот скажем именно в моём коде
<?
echo<<<HTML // А это вылезало когда у пользователя нету куков !!!
<form action=enter.php?auth method=post>
Логин <input class=input name=name value="">
Пароль <input class=input name=pass value="">
<input type=hidden name=enter value=yes>
<input class=button type=submit value="Вход">
</form>
HTML;
if(isset($_GET['auth'])){
setcookie("name",$name,time()+3600);
setcookie("pass",$pass,time()+3600);
}
echo "Добро пожаловать $name <br> //Эти ссылки должнен видеть толька авторизированный аккуант.
<a href=?logout>Выйти</a>";
if(isset($_GET['logout'])){
setcookie("name",$name,time()-999999);
setcookie("pass",$pass,time()-999999);
echo "<meta http-equiv='Refresh' content='0; URL=enter.php'>";
}
?>
|
| |
|
|
|
|
|
|
|
для: bartik
(06.07.2006 в 13:20)
| | Проверка к тому и сводится, что если куков нет, то просим авторизоватся.
А если есть, то сверяем их с правильными логином и паролем, если не совпадают, то опять просим авторизоваться.
К стати для начала былобы не плохо проверить разрешены ли у пользователя куки | |
|
|
|
|
|
|
|
для: bartik
(06.07.2006 в 13:20)
| | А что это значит:
Так вообще можно писать или это << вместо кавычек?
И почему вы не закрываете тег html ? | |
|
|
|
|
|
|
|
|
для: bartik
(06.07.2006 в 13:20)
| | Имеется ввиду такое поведение?
<?php
if(isset($_GET['logout']))
{
setcookie("name",$name,time()-999999);
setcookie("pass",$pass,time()-999999);
echo "<meta http-equiv='Refresh' content='0; URL=enter.php'>";
exit();
}
if(!empty($_POST))
{
setcookie("name",$_POST['name'],time()+3600);
setcookie("pass",$_POST['pass'],time()+3600);
header("Location: $_SERVER[PHP_SELF]");
}
if($_COOKIE['name'] != "bart" || $_COOKIE['pass'] != "bart")
{
?>
<form method=post>
Логин <input class=input name=name value="">
Пароль <input class=input name=pass value="">
<input type=hidden name=enter value=yes>
<input class=button type=submit value="Вход">
</form>
<?php
}
else
{
echo "Добро пожаловать $name <br>
<a href=?logout>Выйти</a>";
}
?>
|
| |
|
|
|
|
|
|
|
для: bartik
(06.07.2006 в 02:12)
| |
<?
if(!isset($_COOKIE['name']) OR empty($_COOKIE['name'])) {
// Проверяем авторизован ли уже пользователь. Если нет - пусть пройдёт авторизацию
if(!isset($_POST['password']) OR !isset($_POST['name'])){ // ПРоверяем ввёл ли пользователь свои данные
//Если нет - выводим форму для ввода
?>
<form method='post'>
Имя посетителя : <input type='text' name='name'><br>
Пароль : <input type='password' name='password'><br>
<input type='submit' value='Отправить'>
</form>
<?php
die(); }// И заканчиваем выполнение скрипта. (Всё равно он не авторизован)
$pass=$_POST['password']; $user=$_POST['name'];
if(empty($pass) || empty($user)){die('Заполните поля..');}
// Проверяем не нажал ли пользователь просто так на кнопку сабмит
$allowed_user = "bart";
$allower_pass = "bart";
// Определяем верные значения
if ($pass != $allower_pass || $user != $allowed_user)
{ die('Неверно указанна пара логин-пароль.');}
// Проверяем сходится ли верное значение с введённым..
setcookie("name",$user,time()+3600); // Если всё правильно, выдаём куку и перезагружаем страницу
echo "<meta http-equiv='Refresh' content='0; URL=".$_SERVER['PHP_SELF']."'>";
}
else{$user=$_COOKIE['name'];} // Это если порльзователь был авторизован - присваиваем переменной его имя
if(isset($_GET['logout'])){ // Если пользователь пожелал выйти..
setcookie("name",$user,time()-999999);
echo "<meta http-equiv='Refresh' content='0; URL=".$_SERVER['PHP_SELF']."'>";
}
// Выводим пользователю меню
echo "<HTML><body>
Добро пожаловать ".$user."<br>
<a href=?order>Заказать домен</a>
<a href=?pay>Пополнить баланс</a>
<a href=?logout>Выйти </a>
<HTML>";
// Если он решил пополнить баланс - предоставим ему такую возможность..
if(isset($_GET['pay'])){ ?>
<HTML>
<form method="post">
<input type="hidden" name="p" value="addamount">
Пополнить счет на <input type="text" name="add" size="4"> $
<input type="submit" value="Добавить средства">
</form>
<HTML>
<?php die();}
|
| |
|
|
|
|
|
|
|
для: valenok
(06.07.2006 в 12:35)
| | Сделал следущим образом
<?
if(!isset($_COOKIE['name']) OR empty($_COOKIE['name'])) {
if(!isset($_POST['pass']) OR !isset($_POST['name'])){
echo "<table align=center><form method='post'>
Имя : <input type='text' name='name'>
Пароль : <input type='password' name='pass'>
<input type='submit' value='Войти'>
</form></table>";
exit;
}}
include "conf.php";
if($name =="" or $pass==""){echo "Заполните все поля!"; exit;}
$query=mysql_query("select * from users where user_name='$_POST[name]' and user_pass='$_POST[pass]';");
if($query_array=mysql_fetch_array($query)){
setcookie("name",$name,time()+3600);
setcookie("pass",$pass,time()+3600);
echo"<HTML><body>
<table align=center>Добро пожаловать <b>".$name." Пароль ".$pass."</b><br>
<a href=?order>Заказать домен</a>
<a href=?pay>Пополнить баланс</a>
<a href=?edit>Изменить данные</a>
<a href=?logout>Выйти </a><br></table>
<HTML>";
}
if(isset($_GET['pay'])){
echo<<<HTML
<table align="center" cellpadding="10">
<tr>
<td align=>
Общая сумма на балансе: <b>0$</b><br>
Остаток на счету: <b>0$</b><br>
<form action="enter.php" method="GET"><input type="hidden" name="p" value="addamount">
Пополнить счет на <input type="text" value="" name="add" size="4"> $ <input type="submit" value="Добавить средства">
</form>
</td>
</tr>
</table>
HTML;
}
if(isset($_GET['order'])){
echo<<<HTML
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
$name
HTML;
}
if(isset($_GET['logout'])){
setcookie("name",$user,time()-999999);
setcookie("pass",$pass,time()-999999);
echo "<meta http-equiv='Refresh' content='0; URL=".$_SERVER['PHP_SELF']."'>";
}
?>
|
Вот сделал с mysql , но у меня одна загвоздка , если вводить с главной логин и пароль и ввести не те данные то не пустит , а если вводить скажем с enter.php?pay то при вводе любых данных пускает , это не правильно!!! А вот где ошибка подскажите пожалуйста. | |
|
|
|
|
|
|
|
для: bartik
(06.07.2006 в 15:37)
| | Если вы перед этим авторизовались и не убили куки, то это нормально
А вообще-то лучше вынести авторизацию в отдельный файл и при не удачной проверке куков делать на него переадресацию. | |
|
|
|