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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: скрипт

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Каролина
Отправлено: 08 Сентября, 2012 - 08:55:56
Post Id



Частый гость


Покинул форум
Сообщений всего: 241
Дата рег-ции: Дек. 2011  
Откуда: от верблюдика


Помог: 0 раз(а)

[+][+]


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


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




отформатируй по человечески и увидишь где у тебя скобки не закрываютсся


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


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
KingStar
Отправлено: 08 Сентября, 2012 - 09:49:09
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)






не закрыта скобкой


-----
То что программа работает, не означает что она написана правильно!
 
 Top
AlexAnder
Отправлено: 08 Сентября, 2012 - 11:20:48
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 915
Дата рег-ции: Авг. 2012  
Откуда: Россия


Помог: 34 раз(а)




Классный Код пишет:
...
if(выражение !== false)
...
if(выражение===true){//от винта};
...

Не понял


-----
Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©

Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
 
 Top
Каролина
Отправлено: 08 Сентября, 2012 - 22:01:13
Post Id



Частый гость


Покинул форум
Сообщений всего: 241
Дата рег-ции: Дек. 2011  
Откуда: от верблюдика


Помог: 0 раз(а)

[+][+]


сделала еще один код как вам ток он не работает чета
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. // это файл login.php
  3. // здесь не должно быть хтмл кода. для хтмл используется соответствующий файл login.htm.php
  4.  
  5. // эту функцию рекомендую использовать для отладки, чтобы смотреть на экране содержимое переменных и выглядело красиво.
  6. // ее можно перенести в файл, который всегда запускается первым и тогда она будет везде доступна.
  7. function echo2($expression){
  8.  echo '<pre>'.print_r($expression, 1).'</pre>';
  9. }
  10.  
  11. // эта функция для того чтобы на всех страницах однообразно проверять статус пользователя. ее также нужно поместить в файл который всегда запускается первым,
  12. // или копировать на все страницы, где нужно проверять авторизованность пользователя.
  13. /**
  14.  * Возвращает учетную запись пользователя если пользователь авторизован или пустой массив, если не авторизован.
  15.  */
  16. function current_user_get(){
  17.  if(isset($_SESSION['user']['login'])){
  18.   return $_SESSION['user'];
  19.  } else {
  20.   return array();
  21.  }
  22. }
  23.  
  24.  
  25. /**
  26.  * Устанавливает учетную запись в сессию.
  27.  * Эта функция пока простая. Но для очевидности вынесена сюда.
  28.  * @param array $user - учетная запись пользователя, которая подтверждена введенным паролем. Все поля кроме пароля рекомендуется.
  29.  */
  30. function current_user_set(array $user){
  31.  $_SESSION['user'] = $user;
  32. }
  33.  
  34.  
  35. // это массив таблица записи пользователей. вместо записей таблицы "users" базы данных.
  36. // в таблице пользователей не должно быть ничего лишнего.
  37. $users = array(
  38. array('name'=>'Вася', 'login'=>'vasya', 'pass'=>'PassiZ', 'role'=>'admin'),
  39. array('name'=>'Петя', 'login'=>'petya', 'pass'=>'PassidzX2', 'role'=>'user'),
  40. array('name'=>'Саша', 'login'=>'sasha', 'pass'=>'PassisF02', 'role'=>'user')
  41. );
  42.  
  43. // начало кода...
  44. $title = 'Вход на сайт'; // будет отрисовано в шаблоне.
  45. $gstate_msg = array(); // сообщения о текущем состоянии формы. лучше расположить это в шаблоне на последнем месте. и шрифт курсив.
  46. $submit_msg = array(); // сообщения которые нужно вывести после субмита. лучше всего расположить их в шаблоне рядом с кнопкой. жирным шрифтом.
  47. // оба масива будут преобразованы в строку в шаблоне.
  48.  
  49.  
  50.  
  51.  
  52. if(count($_POST)){
  53.  extract($_POST, EXTR_SKIP); // извлекаем все переменные, из поста (не заменяя существующие).
  54.  // $login, $pass, $go
  55.  $logout_disabled = 'disabled';
  56. }else {
  57.  // переменные, которые должны быть объявлены для подстановки в форму если нет поста (если есть пост, эти переменные будут извлечены из поста extract).
  58.  $login = '';
  59.  $logout_disabled = 'disabled';
  60. }
  61.  
  62. if(count($_POST)){
  63.  if(isset($logout)){
  64.   // когда было нажато на кнопку выход
  65.   header('Location: '.$_SERVER['REQUEST_URI']); // переходим на гет текущей.
  66.   exit();
  67.  }
  68.  // значит нажато на кнопку $go
  69.  
  70.  
  71.  // проверяем совпадение пары логин пароль. переменная $user будет установлена значением соответсвующейзаписи из таблицы пользователей,
  72.  // или не будет установлена при несовпадении пары логин-пароль.
  73.  // цикл по каждой записи и проверка совпадения логина и пароля одновременно.
  74.  foreach($users as $record){
  75.   if($login == $record['login'] && $pass == $record['pass']){
  76.    $user = $record; // логин пароль совпал
  77.    break; // поиски можно не продолжать, так как запись найдена. (база данных должна гарантировать что только поле логин уникальное)
  78.   }
  79.  }
  80.  if(!isset($user)){
  81.   // можно ничего не делать, но в форму передать сообщение необходимо.
  82.   $submit_msg[] = 'Пользователь с таким логином и паролем не найден.';
  83.   $submit_msg[] = 'Подсказка: вот эти все пользователи, их пароли и роль на сайте:<pre>'.print_r($users, true).'</pre>';
  84.  
  85.  } else {
  86.   // запись найдена, потому что в форме был передан верный пароль и логин.
  87.   // пользователя можно авторизовать. как признак, в сессию можно установить учетную запись пользователя.
  88.   // сессия это временный файл, который связан с конкретным броузером с помощью куков. пхп об этом заботится, предоставляя переменную $_SESSION,
  89.   // которая ведет себя как обычный массив.
  90.   unset($user['pass']); // чтобы не сохранять пароль в файле сессии. остальное остается. самое важное и ключевое это login, остальное для удобства.
  91.   current_user_set($user);
  92.   //$current_user = current_user_get();
  93.   //$submit_msg[] = $current_user['name'].', вы успешно авторизовались по логину '.$current_user['login'].'. Ваша роль на сайте :'.$current_user['role'].'.';
  94.   // так как пользователь изменился успешно, нет смысла отображать сообщение субмита, пользователь увидит его в состоянии,
  95.   // когда перейдем на гет хеадером. вообще-то отсюда надо идти на страницу, которая затребовала авторизацию, но этого кода еще нет...
  96.  
  97.   // чтобы сделать так, чтобы пользователь переходил на страницу, которая запросила авторизацию,
  98.  
  99.   if(!isset($_GET['return_uri'])){
  100.    header('Location: '.$_SERVER['REQUEST_URI']); // переходим на гет текущей.
  101.   } else {
  102.    header('Location: '.$_GET['return_uri']); // переходим на гет той страницы которая запросила авторизацию..
  103.   }
  104.  
  105.  
  106.  }
  107. } else {
  108.  // нет поста. отобразить текущее состояние.
  109.  $current_user_get = current_user_get(); //
  110.  if(count($current_user_get)){
  111.   $gstate_msg[] = 'Вы уже авторизованы как "'.$current_user_get['name'].'". Ваша роль на сайте: "'.$current..;
  112. ?>
 
 Top
OrmaJever
Отправлено: 08 Сентября, 2012 - 23:47:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




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

(Отредактировано автором: 08 Сентября, 2012 - 23:47:44)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB