...
проверка логина и пароля
...
if ($admin) header('Location: mainadmin.php');
if ($user) header('Location: mainabonent.php');
Переход на другую страницу
У меня есть страница, на которой пользователь вводит логин и пароль, проверяется логин, если это пользователь, то идет проверка в базе данных, и я должна перейти с index.php на mainabonent.php, если же это админ то перейти на mainadmin.php. Подскажите чем это можно реализовать(как бы ссылки отпадают, есть вариант через Javascript, через обработчик событий но кнопка то одна, а вариантов два)?
Код:
ну как то так.
<H1> Для входа в систему введите логин и пароль</H1>
<BR>
<form action="index.php" method="POST">
<BR><h4>Введите логин</h4> <input type="text" name="log" size="15" maxlength="20"><BR>(Логин вводить в формате +380ХХХХХХХХХ)<BR>
<BR><h4>Введите пароль</h4> <input type="password" name="pass" size="15" maxlength="20"><BR>
<BR><input type="submit" name="enter" value="Войти"><BR>
</form>
<?php
$log=$_POST['log'];
$_SESSION['log']=str_replace("+380","",$log);
if(preg_match("/^[0-9]+$/i",$_SESSION[log]))
{ echo '<script>window.location.href="mainabonent.php"</script>'; }
if($_POST['log']=="admin")
{ echo '<script>window.location.href="mainadmin.php"</script>'; }
?>
<?php
session_start();
?>
<HTML>
<HEAD>
<TITLE>Cell phone</TITLE>
<STYLE type="text/css">
P {
font-family: Times New Roman, serif;
margin-left: 5%;
margin-right: 5%;
margin-top: 1pt;
margin-bottom: 1pt;
text-indent: 1cm;
text-align: justify;
}
</STYLE>
</HEAD>
<BODY><BODY background="image/bg2.jpg" align=center><p align="right">
<H1> Для входа в систему введите логин и пароль</H1>
<BR>
<form action="index.php" method="POST">
<BR><h4>Введите логин</h4> <input type="text" name="log" size="15" maxlength="20"><BR>(Логин вводить в формате +380ХХХХХХХХХ)<BR>
<BR><h4>Введите пароль</h4> <input type="password" name="pass" size="15" maxlength="20"><BR>
<BR><input type="submit" name="enter" value="Войти"><BR>
</form>
<?php
$log=$_POST['log'];
$pass=$_POST['pass'];
$data_str=str_replace("+380","",$log);
if(isset($_POST['log']))
{
if(preg_match("/^[0-9]+$/i",$data_str))
{
$dbhost = "localhost";
$dbuser = "root";
$dbpassword = "";
$dbname = "cell_phone";
$link = mysql_connect($dbhost, $dbuser, $dbpassword);
mysql_select_db($dbname);
$query = " Select FIO from TNumber where id_number='$data_str' AND password='$pass'";
$result = mysql_query($query);
if(mysql_fetch_array($result))
{
$_SESSION['log']=$data_str;
echo '<script>window.location.href="mainabonent.php"</script>';
}
else
{
echo "Проверьте правильность ввода логина и пароля";
}
mysql_close($link);
}
else
{
echo "Проверьте правильность ввода логина и пароля";
}
}
if($_POST['log']=="admin")
{ echo '<script>window.location.href="mainadmin.php"</script>'; }
?>
</BODY>
</HTML>
Цитата: LiLiya91
А это кому нужно код, спроверкой в БД
<?php
// ...
$query = " Select FIO from TNumber where id_number='$data_str' AND password='$pass'";
$result = mysql_query($query);
<?php
// ...
$query = " Select FIO from TNumber where id_number='$data_str' AND password='$pass'";
$result = mysql_query($query);
Не поленитесь, прочтите весь FAQ по безопасности
SibBear уже написал:
if ($admin) header('Location: mainadmin.php');
if ($user) header('Location: mainabonent.php');
с JS - это извращение... Правильный переход - через передачу заголовков.
Также я бы исключил такое большое количество ИФов...
К тому же я не увидел в вашем коде проверку логина и пароля для админа... Только для номера телефона (привет, Украина!)... А для админа - ддостаточно просто ввести логин "admin" и всё гуд...
В подтверждение этого:
Код:
if(isset($_POST['log']))
{
...
}
if($_POST['log']=="admin")
{ echo '<script>window.location.href="mainadmin.php"</script>'; }
{
...
}
if($_POST['log']=="admin")
{ echo '<script>window.location.href="mainadmin.php"</script>'; }
Вообще-то это действительно для игры на денвере, и это часть курсового, но суть не состоит, в том чтобы проверять "who is who", главное что я могу их разделить. Но я думаю, что, если бы речь касалась работы, я бы догадалась не выкладивать код. Но все равно спасибо!!!
если использовать header("Location: redirected.php");
то в адресной строке пишет redirected.php
а если мне нужно, чтобы в адресе было написано index.php, а по факту работад redirected.php но без htaccess?
это в частности нужно при чпу
site.php/redirected/
нужно в индексе определить и выплюнуть уже что то подобное index.php?redirected=dfdfdf
каким методом сие реализовать? именно вывод? (как определить я знаю)
2) Архитектурно. Обрабатывать все запросы через одну точку входа: index.php (все зависимости от переданного в URI).
Цитата: alekciy
2) Архитектурно. Обрабатывать все запросы через одну точку входа: index.php (все зависимости от переданного в URI).
Да обработать то я обработаю, сказал же. Нужен именно вывод.
вот я ввел site.ru/redirect/sovevar/
обработал, получил redirect.php?somevar&трампампам&вседела
проделал какие то операции и теперь мне нужно вывести redirect.php?somevar&трампампам&вседела
header("location /redirect.php?somevar&трампампам&вседела") не подходит, потому, что в адресной строке все вылазит. а должно оставаться site.ru/redirect/sovevar/
вот я о чем.
Входа на линк example.net/redirect/sovevar/ -> редирект на redirect.php?somevar&трампампам&всед_ела -> редирект на example.net/redirect/sovevar/
Бизнес логина отрабатывает на обеих страницах, но только example.net/redirect/sovevar/ генерирует html, redirect.php ни чего не генерит, только делает редирект. Отследить такие переходы конечно можно без проблем, но просто пользователь их обычно не замечает, они происходят очень быстро и визуально кажется, что example.net/redirect/sovevar/ просто обновилось как по F5. Учитывая, что это реакция на действия юзера, то это оправдано.
будет скакать с одного редиректа на другой
example.net/redirect/sovevar/ отправит на redirect.php?somevar&трампампам&всед _ела
а тот отправит на example.net/redirect/sovevar/ который отправит на redirect.php?somevar&трампампам&всед _ела
и так по кругу до бесконечности...
:)
Если тупо в скрипты зафигачить header с постоянным редиректом, то зациклет конечно же. Но на то ты код и пишешь, что схема реализации зависит от тебя, так? Передавай в параметрах URI переменную-флаг по которой example.net/redirect/sovevar/ будет понимать, что редиректить на redirect.php больше уже не нужно.