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]   

> Описание: $_COOKIE или $_SESSION
vixa
Отправлено: 08 Августа, 2011 - 18:57:15
Post Id



Новичок


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


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




Здравствуйте уважаемые программисты я недавно начал изучать язык php поэтому иногда возникают трудности

Я написал скрипт авторизации и выхода на сайте вот кстате он

PHP:
скопировать код в буфер обмена
  1. $db = mysql_connect('localhost','root','vertrigo') or die("Не могу подключиться к бд");
  2. mysql_select_db('ragsite', $db) or die("БД не найдена");
  3.  
  4. session_start();
  5. if(isset($_POST['log']) && isset($_POST['pass'])) {
  6. $log = $_POST['log'];
  7. $pass = $_POST['pass'];
  8. }
  9.  
  10.  
  11. if($_POST['sub']) {
  12. $log = trim($log);
  13. $log = htmlspecialchars($log);
  14. $log = stripslashes($log);
  15. $pass = trim($pass);
  16. $pass = htmlspecialchars($pass);
  17. $pass = stripslashes($pass);
  18. $pass = md5($pass);
  19. if(empty($log)) {echo "<p>Вы не ввели логин</p>";}
  20. if(empty($pass)) {echo "<p>Вы не ввели пароль</p>";}
  21.  
  22. $query = "select user_pass from login where userid = '$log' and user_pass = '$pass'";
  23. $sql = mysql_query($query) or die("Fatal Error");
  24. if(mysql_num_rows($sql)==1) {
  25. $row = mysql_fetch_assoc($sql);
  26. $_SESSION['log'] = $row['userid'];
  27. $_SESSION['pass'] = $row['user_pass'];
  28. echo "Вы вошли как $log";
  29.  
  30.         }
  31. }
  32. ?>
  33. <?PHP
  34. if(!$_SESSION['log'] && !$_SESSION['pass']) {
  35. echo "<form action='?id=enter' method='post'>
  36. Введите логин: <input name='log' type='text' size='' maxlength='10' /><br>
  37. Введите пароль: <input name='pass' type='password' maxlength='15' />
  38. <input name='sub' type='submit' value='Войти' />
  39. </form>";
  40. } else {
  41. echo "
  42. <form action='?id=exit' method='post'>
  43. <input name='exit' type='submit' value='Выйти' />
  44. </form>
  45. ";
  46.         if($_POST['exit']) {
  47.         unset($_SESSION['log']);
  48.         unset($_SESSION['pass']);
  49.  
  50.         }
  51. }



Но в нем есть проблема!!
Я авторизировался на сайте показует добро пожаловать Vixa нажимаю перейти на другую сылку или просто обновляю страницу и сессия пропадает как запомнить сессию чтоб я мог перейти на другую страничку и серавно остался в Сессии?

И еще 1 вопрос когда я ставлю session_start();
Выпадает ошибка
PHP:
скопировать код в буфер обмена
  1. Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\site\java\index.php:1) in C:\site\java\index.php on line 8
  2.  
  3. Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\site\java\index.php:1) in C:\site\java\index.php on line 8
  4.  


Как её устранить?

(Отредактировано автором: 09 Августа, 2011 - 00:19:47)



-----
Vixa
 
 Top
vixa
Отправлено: 09 Августа, 2011 - 00:23:15
Post Id



Новичок


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


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




Люди помогите не опытному разобраться со всем


-----
Vixa
 
 Top
Ezi
Отправлено: 09 Августа, 2011 - 01:53:59
Post Id



Частый гость


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


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




Wa r n i n g : s e s s i o n _ s t a r t ( ) [ f u n c t i o n . s e s s i o n - s t a r t ] : C a n n o t s e n d s e s s i o n c o o k i e - h e a d e r s a l r e a d y s e n t b y ( o u t p u t s t a r t e d a t C : \ s i t e \ j a v a \ i n d e x . p h p : 1 ) i n C : \ s i t e \ j a v a \ i n d e x . p h p o n l i n e 8 .
. Wa r n i n g : s e s s i o n _ s t a r t ( ) [ f u n c t i o n . s e s s i o n - s t a r t ] : C a n n o t s e n d s e s s i o n c a c h e l i m i t e r - h e a d e r s a l r e a d y s e n t ( o u t p u t s t a r t e d a t C : \ s i t e \ j a v a \ i n d e x . p h p : 1 ) i n C : \ s i t e \ j a v a \ i n d e x . p h p o n l i n e 8 . Как её устранить?


Ошибка в том, что твой скрипт посылает заголовок браузеру раньше чем надоУлыбка я указал на проблему, дальше самУлыбка вообще я посылаю заголовок кодировки в самом начале скриптаУлыбка
(Добавление)
короче напрёг мозг и прочитал ошибку до конца, ты посылаешь заголовок печенек поздно


-----
Хочешь жить - умей вертеться
 
 Top
illy
Отправлено: 09 Августа, 2011 - 08:51:35
Post Id



Участник


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


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




session_start(); ставь в самом начале


-----
Всё гениальное - просто
И ещё проще, если ты - индиго
 
 Top
vixa
Отправлено: 09 Августа, 2011 - 09:32:26
Post Id



Новичок


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


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




нашел причину это Кодировка utf-8 ошибку выдавала всем спасиб


-----
Vixa
 
 Top
vixa
Отправлено: 13 Августа, 2011 - 23:47:23
Post Id



Новичок


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


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




Сессия работает но как то крыво вошел пользователь на сайт написано "добро пожаловать Vixa " обновляю ссылку пропадает надпись добро пожаловать и просто остается кнопка Выход нажимаю на нее и пока не обновлю еще раз сессия не кончится
Чото бред а не скрипт походу надо полюбому использовать шаблон header();

(Отредактировано автором: 13 Августа, 2011 - 23:47:58)



-----
Vixa
 
 Top
illy
Отправлено: 14 Августа, 2011 - 09:55:39
Post Id



Участник


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


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




А куки не лучше? Улыбка


-----
Всё гениальное - просто
И ещё проще, если ты - индиго
 
 Top
vixa
Отправлено: 14 Августа, 2011 - 21:02:32
Post Id



Новичок


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


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




А я не знаю как с куки написать правильно я пишу вот пример

PHP:
скопировать код в буфер обмена
  1. if($_GET['enter']) {
  2. if(empty($_GET['login'])) {echo "Вы не указали логин";}
  3. if(empty($_GET['pass'])) {echo "Вы не ввели пароль";}
  4. $query = "SELECT user_pass FROM login where login = '$_GET['login']'";
  5. $res = mysql_query($query);
  6. if(mysql_num_rows($res)==1) {
  7. $row = mysql_fetch_array($res);
  8. if($row['user_pass'] = $_COOKIE[$_GET['pass']]) {
  9. setcookie('login', $_GET['login']);
  10. setcookie('pass', $_GET['pass']);
  11. } else {
  12. echo "Не верный пароль";
  13.   }
  14.       }
  15. }


Так надо делать или есть более верный способ?


-----
Vixa
 
 Top
illy
Отправлено: 15 Августа, 2011 - 10:08:10
Post Id



Участник


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


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




PHP:
скопировать код в буфер обмена
  1.  
  2. if(isset($HTTP_COOKIE_VARS['login'])){
  3. $query = "SELECT user_pass FROM login where login=$HTTP_COOKIE_VARS['login']";
  4. if($row['user_pass']==$HTTP_COOKIE_VARS['login']){
  5. echo "Ваш логин: $HTTP_COOKIE_VARS['login']";
  6. echo "Ваш пароль: $HTTP_COOKIE_VARS['pass']";
  7. }
  8. else {
  9. echo 'Неверный пароль или логин';
  10. }
  11. }
  12.  
  13.  
  14. if($_GET['enter']) {
  15. if(empty($_GET['login'])) {echo "Вы не указали логин";}
  16. if(empty($_GET['pass'])) {echo "Вы не ввели пароль";}
  17. $query = "SELECT user_pass FROM login where login=$_GET['login']";
  18. $res = mysql_query($query);
  19. if(mysql_num_rows($res)==1) {
  20. $row = mysql_fetch_array($res);
  21. if($row['user_pass'] = $_COOKIE[$_GET['pass']]) {
  22. setcookie('login',$_GET['login'],time()+3600*24*365,'/',$_SERVER['SERVER_NAME']);
  23. setcookie('pass',$_GET['pass'],time()+3600*24*365,'/',$_SERVER['SERVER_NAME']);
  24. } else {
  25. echo "Не верный пароль";
  26. }
  27. }
  28. }


-----
Всё гениальное - просто
И ещё проще, если ты - индиго
 
 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