| |
|
|
| | Скажите пожалуйста, почему в нижеприведенном коде не работают куки ?!
<?php
if($_POST['name'] && $_POST['password']) {
if(!get_magic_quotes_gpc())
{
$password = mysql_escape_string($_POST['password']);
$name = mysql_escape_string($_POST['name']);
} else {
$password = $_POST['password'];
$name = $_POST['name'];
}
$password = md5($password);
$query = "SELECT * FROM `users` WHERE `name` = '".$name."' AND `pass` = '".$password."'";
$result = mysql_query($query);
if(!$result) exit("Ошибка");
if(mysql_num_rows($result))
{
$_SESSION['fname'] = $name;
$_SESSION['password'] = $password;
setcookie('name_cook',$_SESSION['fname'],time()+ 86400 * 30 * 12);
setcookie('pass_cook',$_SESSION['password'],time()+ 86400 * 30 * 12);
echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'></HEAD><body>";
} else {
echo("Неверный пароль");
echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='1; URL=index.php'></HEAD><body>";
}
}
if($_GET['do'] == 'logout')
{
setcookie('name_cook', "");
setcookie('pass_cook', "");
session_destroy();
echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'></HEAD></HTML>";
}
?>
|
| |
| |
|
|
| |
|
|
| |
для: SnooPI
(19.05.2007 в 13:26)
| | | Вот этот кусок кода:
<?php
if(!get_magic_quotes_gpc())
{
$password = mysql_escape_string($_POST['password']);
$name = mysql_escape_string($_POST['name']);
} else {
$password = $_POST['password'];
$name = $_POST['name'];
}
?>
|
Лучше заменить на
<?php
if(!get_magic_quotes_gpc())
{
$password = $_POST['password'];
$name = mysql_escape_string($_POST['name']);
}
else
{
$password = stripslashes($_POST['password']);
$name = $_POST['name'];
}
?>
|
Потому как дальше Вы вычисляете хеш из $password. А если там будут лишние бекслеши - только хуже. | |
| |
|
|
| |
|
|
| |
для: Unkind
(19.05.2007 в 13:31)
| | | Вообщем теперь пишет ошибку обычную headers already by sent......
Вот как в моем случае, в моем коде исправить её??не поставить ведь никуда выше :( | |
| |
|
|
| |
|
|
| |
для: SnooPI
(19.05.2007 в 14:19)
| | | первым байтом файла является какой символ? Уголок? | |
| |
|
|
| |
|
|
| |
для: Trianon
(19.05.2007 в 14:49)
| | | Вот весь код файла....
<?php
include ("header.php");
echo "<form action='auth.php' method='post'>
Login : <br /><input type='text' name='name' value='".$_SESSION['name']."' /><br /><br />
Pass : <br /><input type='password' name='password' value='".$_SESSION['password']."' /><br /><br />
<input type='submit' value='Войти' title='Войти' />
</form>";
if($_POST['name'] && $_POST['password'])
{
if(!get_magic_quotes_gpc())
{
$password = $_POST['password'];
$name = mysql_escape_string($_POST['name']);
} else {
$password = stripslashes($_POST['password']);
$name = $_POST['name'];
}
$password = md5($password);
$query = "SELECT * FROM `users` WHERE `name` = '".$name."' AND `pass` = '".$password."'";
$result = mysql_query($query);
if(!$result) exit("Ошибка");
if(mysql_num_rows($result))
{
$_SESSION['fname'] = $name;
$_SESSION['password'] = $password;
setcookie('name_cook',$_SESSION['fname'],time()+ 86400 * 30 * 12);
setcookie('pass_cook',$_SESSION['password'],time()+ 86400 * 30 * 12);
echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'></HEAD><body>";
} else {
echo("Неверный пароль");
echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='1; URL=index.php'></HEAD><body>";
}
}
if($_GET['do'] == 'logout')
{
setcookie('name_cook', "");
setcookie('pass_cook', "");
session_destroy();
echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'></HEAD></HTML>";
}
include ("footer.php");
?>
|
в header.php сначала идет session_start();
Потом вывод сайта =) | |
| |
|
|
| |
|
|
| |
для: SnooPI
(19.05.2007 в 15:06)
| | | Покажите шестнадцатеричный код первых двух байх этого файла и файла header.php.
весь код тут не нужен совершенно. | |
| |
|
|
| |
|
|
| |
для: Trianon
(19.05.2007 в 15:20)
| | | А как мне это сделать? | |
| |
|
|
| |
|
|
| |
для: SnooPI
(19.05.2007 в 17:54)
| | | короче до куков не должно быть никакого вывода, ни echo, ни print, ни даже лишних пробелов перед <?php
проверьте это! | |
| |
|
|
| |
|
|
| |
для: SnooPI
(19.05.2007 в 17:54)
| | | понятия не имею, честно говоря. Зависит от Ваших предпочтений в инструментарии.
Я это делаю в FAR или NDN. Вы можете применить любую из тех программ, которые это умеют и Вас устраивают. На самый худой конец - сравните файл с другим, наперед отличным от Вашего, командой fc /b file1 file2 | more | |
| |
|
|
| |
|
|
| |
для: Trianon
(19.05.2007 в 18:55)
| | | Лучше тогда уж открыть файл в WordPad'е - он Unicode не поддерживает. И удалить лишние символы до "<?php". | |
| |
|
|
| |
|
|
| |
для: Unkind
(19.05.2007 в 19:40)
| | | Вот как бы пропатчить PHP, чтоб он сам BOM выкидывал.... | |
| |
|
|
| |
|
|
| |
для: SnooPI
(19.05.2007 в 17:54)
| | | Удалите все символы перед <?php, даже пробелы! | |
| |
|
|
| |
|
|
| |
для: mefestofel
(20.05.2007 в 00:00)
| | | Вот это в загнались не в ту сторону проблемы )))
Ошибка эта из-за того что у меня есть вывод хтмл, до setcookie....
Там мне нужен этот вывод...убрать его нельзя, поэтому и спрашиваю у вас, как мне сделать в этом коде правильную устновку куков | |
| |
|
|
| |
|
|
| |
для: SnooPI
(20.05.2007 в 02:47)
| | | Он Вам там не нужен.
Для того, чтобы принять решение о необходимости установки куков на основании входных данных скрипта, не требуется производить никакой вывод. Вообще никакой.
Кроме того, Вы в предыдущих постах утверждали, что до setcookie вывода у Вас нет.
Как это понимать? | |
| |
|
|
| |
|
|
| |
для: Trianon
(20.05.2007 в 03:40)
| | | попробуйте через буфер тогда | |
| |
|
|
| |
|
|
| |
для: bronenos
(20.05.2007 в 07:03)
| | | хм, ну ведь у меня должна быть форма ввода логина и пароля, а потом как ввели добавлять куки...как же я подругому сделаю? | |
| |
|
|
| |
|
|
| |
для: SnooPI
(20.05.2007 в 15:58)
| | | Запрос и процесс выполнения скрипта, выводящего форму ввода и соответственно -
запрос(путем отправки формы браузером) и процесс выполнения скрипта, обрабатывающего данные формы и создающего куки - это РАЗНЫЕ пары запрос-процесс. | |
| |
|
|