Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Переадрисация
Форумы портала PHP.SU » » Вопросы новичков » Переадрисация

Страниц (1): [1]
 

1. Каролина - 04 Сентября, 2012 - 19:40:47 - перейти к сообщению
есть такой код который должен перенаправлять на 3 страницы. на 1 стр перенаправляет на 2 и 3 нет там на странице указаны лог и пароль если что http://nashclas[dot]tk/admin/
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. function echo2($expression){
  4. echo '<pre>'.print_r($expression, 1).'</pre>';
  5. }
  6.  
  7.  
  8. // это массив таблица записи пользователей. пароль хранится как буто в закрытом виде хеш мд5
  9. $users = array(
  10.  array('login'=>'LogniZ1', 'name'=>'Задания','pass'=>'PassiZ') ,
  11. array('login'=>'LognidzX1', 'name'=>'Д/З', 'pass'=>'PassidzX2'),
  12.  array('login'=>'LoginisF01', 'name'=>'Фото', 'pass'=>'PassisF02')
  13.  );
  14.  
  15.  
  16.  
  17.  
  18. if(count($_POST)){
  19. $submit_msg = array();
  20. echo2($_POST);
  21. extract($_POST, EXTR_SKIP); // извлекаем все переменные, они будут по имени name формы (в том числе переменная $go но она и не нада)
  22. echo2('login:'.$login);
  23. echo2('pass:'.$pass);
  24.  
  25. foreach($users as $record){
  26. if($login == $record['login'] && $pass == $record['pass']){
  27. $user = $record; // логин пароль совпал
  28. break;
  29. }
  30. }
  31.  
  32. if(isset($user)){
  33. echo2($user);
  34. $is_admin = strpos($user['role'], 'admin') !== false; // true - админь, false, простой смертный.
  35. $_SESSION['is_admin'] = $is_admin; // на страницах админа проверять например так:
  36.  if(!$_SESSION['is_admin']===true){//от винта};
  37. $_SESSION['name'] = $user['name']; // а это напрмпер отображать имя текущего пользователя.
  38. if($users[0])
  39.  header('Location:http://nashclas.tk/admin/zadania/'); // куда направляться после логина. }
  40. elseif ($users[1])
  41.  header('Location:http://nashclas.tk/admin/d.z/'); // куда направляться после логина. }
  42. elseif ($users[2])
  43.  header('Location:http://nashclas.tk/admin/foto/'); // куда направляться после логина. }
  44.  
  45.  
  46. } else {
  47. $submit_msg[] = 'пользователь с таким логином и паролем не найден.';
  48. $submit_msg[] = "попробуйте бла бла бла";
  49. }
  50. $msg = implode('<br>', $submit_msg);
  51. } else {
  52. // переменные для подстановки в форму.
  53. $login = '';
  54.  
  55. $msg = '';
  56. }
  57. ?><form method="post">
  58. <fieldset><label for="login">Логин</label>:<br>
  59. <input type="text" id="login" name="login" value="<?=$login?>"><br>
  60. <label for="pass">Пароль</label>:<br>
  61. <input type="password" id="pass" name="pass"><br>
  62. <input type="submit" id="go" name="go" value="Login"><br>
  63. </fieldset>
  64. <?=$msg?></form>
  65.  
  66.  
  67.  
  68. , попробуйте бла бла бла, попробуйте бла бла бла
2. Slavenin - 04 Сентября, 2012 - 22:28:30 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. if(!$_SESSION['is_admin']===true)

сурово...
ну и логично, что срабатывает первый редирект, так как первый элемент массива $users всегда существует
3. AlexAnder - 05 Сентября, 2012 - 10:52:03 - перейти к сообщению
вроде так: [censored]

Цитата:
Троллинг. Строгое предупреждение.

ну по-моему это тс тролль, с его описания проблемы ничего же не понятно Огорчение
Спойлер (Отобразить)
4. avtor.fox - 05 Сентября, 2012 - 11:16:53 - перейти к сообщению
AlexAnder, вот не знаю что ты там написал, но если получил строгое предупреждение, то [cut] Улыбка Многоль ли ты умел в 6 классе?

А по сабжу.
Каролина, попробуй подойти к реализации немного с другой стороны. Почитай про базы данных и про работу всех функций какие используешь. У тебя проблема не с кодом, а с его знанием и твоей логикой. Например гораздо удобней при логине отправить пользователя на страницу с его проверкой, присвоить всем нужным переменным значения, а уж потом отправлять на обработку этих значений.
И нужно стараться исключать такие глупые проверки как if(count($_POST)) Улыбка
Читай же мануал по функциям, а мы поможем без троллинга и даже бесплатно Улыбка

//Блин Ха-ха
5. AlexAnder - 05 Сентября, 2012 - 11:23:13 - перейти к сообщению
avtor.fox пишет:
Многоль ли ты умел в 6 классе?

В 6-ом классе у меня даже и мыслей не было о веб-технологиях

avtor.fox пишет:
ты [censored, это я сказал про себя xD] Улыбка

правильно, ведь Вы же любите тех, кто не читая мануалов лезет в сайтостроение и при первой же возможности идёт на форум, задавая свои вопросы, при этом даже ничего не предприняв

avtor.fox пишет:

Каролина, попробуй подойти к реализации немного с другой стороны. Почитай про базы данных и про работу всех функций какие используешь. У тебя проблема не с кодом, а с его знанием и твоей логикой. Например гораздо удобней при логине отправить пользователя на страницу с его проверкой, присвоить всем нужным переменным значения, а уж потом отправлять на обработку этих значений.
И нужно стараться исключать такие глупые проверки как if(count($_POST)) Улыбка
Читай же мануал по функциям, а мы поможем без троллинга и даже бесплатно Улыбка

Ага, правильно, продолжай в том же духе Ха-ха
6. Каролина - 05 Сентября, 2012 - 19:18:56 - перейти к сообщению
базу данных читала месяц назад с ней дружу
(Добавление)
откуда у меня -2 репутации
7. AlexAnder - 06 Сентября, 2012 - 09:20:33 - перейти к сообщению
Ха-ха

 

Powered by ExBB FM 1.0 RC1