|
|
|
|
|
для: alex151
(05.08.2007 в 17:56)
| | Всё нашёл в чём проблема .... а проблема в призраках ..
пользуюзь прогой Notepad++ для написания пхп-скриптов ну и для проверки просто блокнотом.
проверил скрипт login.php программой ZendStudio-5.5.0 и он нашёл перед тэгом <? символы "п»ї", которые в упор невидели ноутпады, и потом выявился невидимый пробел перед тэгом <? в скрипте connect.php
Так что вот такие вот приколы. Спасибо всем, кто мне помогал. | |
|
|
|
|
|
|
|
для: tricket
(05.08.2007 в 17:50)
| | в том то и дело, что пробелов нету. я даже разбил форму и скрипт установки кукисов в разные пхп файлы и нифига - та же ошибка.
сохранение файлов в кодировке utf-8 никак невлияет ? | |
|
|
|
|
|
|
|
для: alex151
(05.08.2007 в 17:46)
| | смотри внимательно на пробелы
должно быть строго так
<?php
session_start();
чтоб начало документа было <?php без пробелов и тд!"!! | |
|
|
|
|
|
|
|
для: tricket
(05.08.2007 в 17:40)
| | да login.php | |
|
|
|
|
|
|
|
для: alex151
(05.08.2007 в 17:39)
| | сам файл login.php называется?
<?php перед ним убери пробелы, интеры и тд.. | |
|
|
|
|
|
|
|
для: tricket
(05.08.2007 в 17:28)
| | нет тоже неправильно теперь получаю :
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at ...\login.php:1) in ...\login.php on line 2
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at ...\login.php:1) in ...\login.php on line 2 | |
|
|
|
|
|
|
|
для: tricket
(05.08.2007 в 17:28)
| | вот как общаются браузер и сервер
браузер посылает:
POST /forum/enter.php HTTP/1.1
Host: softtime.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://softtime.ru/forum/enterform.php?id_forum=1
Content-Type: application/x-www-form-urlencoded
Content-Length: 38
author=tricket&pswrd=***&id_forum=1
|
сервер отвечает:
HTTP/1.1 200 OK
Server: nginx/0.5.15
Date: Sun, 05 Aug 2007 13:35:40 GMT
Content-Type: text/html; charset=windows-1251
Connection: keep-alive
X-Powered-By: PHP/5.2.3
Expires: Mon, 23 May 1995 02:00:00 GMT
Cache-Control: no-cache, must-revalidate
Pragma: no-cache
Set-Cookie: current_author=tricket; expires=Tue, 13-Nov-2007 13:34:43 GMT; path=/forum/
Set-Cookie: wrdp=1q2w3e; expires=Tue, 13-Nov-2007 13:34:43 GMT; path=/forum/
Content-Length: 115
<HTML><HEAD>
<META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php?id_forum=1'>
</HEAD></HTML>
|
как видно тело запроса
<HTML><HEAD>
<META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php?id_forum=1'>
</HEAD></HTML>
|
а заголовок ответа сервера(в них и хранятся куки)
HTTP/1.1 200 OK
Server: nginx/0.5.15
Date: Sun, 05 Aug 2007 13:35:40 GMT
Content-Type: text/html; charset=windows-1251
Connection: keep-alive
X-Powered-By: PHP/5.2.3
Expires: Mon, 23 May 1995 02:00:00 GMT
Cache-Control: no-cache, must-revalidate
Pragma: no-cache
Set-Cookie: current_author=tricket; expires=Tue, 13-Nov-2007 13:34:43 GMT; path=/forum/
Set-Cookie: wrdp=1q2w3e; expires=Tue, 13-Nov-2007 13:34:43 GMT; path=/forum/
Content-Length: 115
|
СЛЕДУЕТ СТРОГО ДО ТЕЛА http запроса!!!!
А телом является echo, print и тд... тоесть любой вывод текста и тд!!
ууфф надеюсь так понятней?) | |
|
|
|
|
|
|
|
для: alex151
(05.08.2007 в 17:22)
| | куки должны устанавливаться ДО вывода любой информации, он чем вам пхп деликатно и сообщает! | |
|
|
|
|
|
|
|
для: alex151
(05.08.2007 в 17:22)
| | шаманишь плохо) попробуй так!
<?php
session_start();
if(!$_POST[log] && !$_POST[pas])
{
.............
|
и вообще вся информация о куках должна быть послана ДО тела запроса, приблизительно твоё решение такое
<?php
session_start();
if($_POST[log] && $_POST[pas])
{
require("inc/connect.php");
mysql_query("set names 'utf8'");
$pas=md5($_POST[pas]);
$afto=mysql_fetch_assoc(mysql_query("select usrnumb,usrname,usrpass,usrnick from usr where usrname='$_POST[log]' and usrpass='$pas'"));
if($afto[usrname] != $_POST[log] && $afto[usrpass] != $pas) {echo "<br><br><BR><BR><BR><center> Ошибка авторизации !</center>";}
else {
mysql_query("update usr set lastvisit=now()");
setcookie("usrname",$afto[usrname],time()+(3600*24*365));
setcookie("usrnumb",$afto[usrnumb],time()+(3600*24*365));
setcookie("usrpass",$afto[usrpass],time()+(3600*24*365));
echo "<link href='inc/style.css' rel='stylesheet' type='text/css'>";
}
}
else {
echo "
<link href='inc/style.css' rel='stylesheet' type='text/css'>
<br><br><br><br><br><br><br><br>
<div align=center><font color=silver>Пожалуйста авторизуйтесь</font></div>
<br>
<form method='POST' action='login.php'>
<TABLE class=etable cellSpacing=1 cellPadding=3 align='center'>
<TR class=etitle>
<td>login</td>
<td align='center'><input name='log' type='text' size=15><br></td>
</tr>
<TR class=etitle>
<td>password</td>
<td><input name='pas' type='text' size=15><br></td>
</tr>
</table>
<table align=center><tr><td><input type='submit' method='POST' value='login'></td></tr></table>
</form>";
}
?>
с учётом того что require("inc/connect.php"); ничего не выводит...
у мну самого были проблемы с пониманием куков) ща выложу да http запроса. после них поймёшь, как они работают.
|
| |
|
|
|
|
|
|
| как не шаманю всё время получаю :
Warning: Cannot modify header information - headers already sent by (output started at ...\login.php:1) in ...login.php on line 33
Warning: Cannot modify header information - headers already sent by (output started at ...\login.php:1) in ...\login.php on line 34
Warning: Cannot modify header information - headers already sent by (output started at ...\login.php:1) in ...\login.php on line 35
вот виновник данного события :
<?php
if(!$_POST[log] && !$_POST[pas])
{
echo "
<link href='inc/style.css' rel='stylesheet' type='text/css'>
<br><br><br><br><br><br><br><br>
<div align=center><font color=silver>Пожалуйста авторизуйтесь</font></div>
<br>
<form method='POST' action='login.php'>
<TABLE class=etable cellSpacing=1 cellPadding=3 align='center'>
<TR class=etitle>
<td>login</td>
<td align='center'><input name='log' type='text' size=15><br></td>
</tr>
<TR class=etitle>
<td>password</td>
<td><input name='pas' type='text' size=15><br></td>
</tr>
</table>
<table align=center><tr><td><input type='submit' method='POST' value='login'></td></tr></table>
</form>";
}
else {
require("inc/connect.php");
mysql_query("set names 'utf8'");
$pas=md5($_POST[pas]);
$afto=mysql_fetch_assoc(mysql_query("select usrnumb,usrname,usrpass,usrnick from usr where usrname='$_POST[log]' and usrpass='$pas'"));
if($afto[usrname] != $_POST[log] && $afto[usrpass] != $pas) {echo "<br><br><BR><BR><BR><center> Ошибка авторизации !</center>";}
else {
mysql_query("update usr set lastvisit=now()");
setcookie("usrname",$afto[usrname],time()+(3600*24*365));
setcookie("usrnumb",$afto[usrnumb],time()+(3600*24*365));
setcookie("usrpass",$afto[usrpass],time()+(3600*24*365));
echo "<link href='inc/style.css' rel='stylesheet' type='text/css'>";
}
}
?>
|
error_reporting = E_ALL & ~E_NOTICE выставлен. в чём проблема никак немогу понять. проверял и в ИЕ и в файерфоксе. Пожалуйста помогите решить проблему | |
|
|
|
|