[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: в чем ошибка?в сессии или в запросе?(авторизациa)
vagif
здрасте дорогие программисты))мне опять нужна ваша помощь.без вас возникают ошибки(помогите новичку.и так,пишем скрипт авторизации.регистрацию сделал,все работает.а вот в этом скрипте такая ошибка-
Fatal error: Function name must be a string in /home/p/parolvag.h19.ru/WWW/login.php on line 22
показывает на строку 22.все-таки дело не в запросе,так как там
 die(mysql_error())
ничего не выдает.это наверно изза сессии,так как я впервые работаю с сессиями.вот код-
<html>
<
head>
<
title>authorisation</title>
</
head>
<
body>
<?php
$go=$_GET['go'];
if(!isset($go)){
print "<form action=\"\" method=get>\n";
print "<table><tr><td>\n";
print "login:</td><td><input name=\"login\" type=\"text\" value=\"\"></td></tr>\n";
print "<tr><td>password:</td><td><input name=\"password\" type=\"text\" value=\"\"></td></tr></table></br>\n";
print "<input type=\"submit\" value=\"go!\" name=\"go\"></form>\n";
}

mysql_connect("localhost","parolva8","0uFN9lFQ") or die (mysql_error());
mysql_select_db("parolva8") or die (mysql_error());
$login=$_GET['login'];
$password=$_GET['password'];
if(!empty($login) && !empty($password)){
if($res=mysql_query("SELECT * FROM `users` WHERE login='$login' AND password='$password' ") or die(mysql_error())){
$row=$mysql_fetch_assoc($res) or die(mysql_error());
session_start();
$_SESSION['login']=$row[login];
echo "</br>\n";
echo "<a href=info.php>info</info>\n";
}else{echo "not found";}
}

else{echo "empty";}
?>
</body>
</
html>




Спустя 3 минуты, 39 секунд (31.08.2011 - 11:43) alex12060 написал(а):

$row=$mysql_fetch_assoc($res) or die(mysql_error());


Кхе-кхе...


$row = mysql_fetch_assoc($res) or die(mysql_error());

Спустя 6 минут, 52 секунды (31.08.2011 - 11:49) l@pteff написал(а):
Вместо </info> нужно </a>

echo "<a href=info.php>info</info>\n";

Спустя 2 минуты, 35 секунд (31.08.2011 - 11:52) vagif написал(а):
ого заработало))спасибо те,я даже не заметил как туда $ вписал.но теперь другая проблема,в сессии-

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/p/parolvag.h19.ru/WWW/login.php:6) in /home/p/parolvag.h19.ru/WWW/login.php on line 23

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/p/parolvag.h19.ru/WWW/login.php:6) in /home/p/parolvag.h19.ru/WWW/login.php on line 23

info

ошибки этого типа headers already sent выходят очень часто,что такое воопще ?ни как не пойму,помогите плизз)

Спустя 1 минута, 13 секунд (31.08.2011 - 11:53) vagif написал(а):
Цитата (l@pteff @ 31.08.2011 - 08:49)
Вместо </info> нужно </a>

echo "<a href=info.php>info</info>\n";

ого и еще одна тупая ошибка.и те спс,но ведь ето не главная ошибка

Спустя 5 минут, 11 секунд (31.08.2011 - 11:58) linker написал(а):
Запоминаем навечно, сначала session_start();, а потом уже весь остальной код. А не так что, сначала что-то выводим, а потом где-то в середине пытаемся запустить сессию. Сессия должна стартовать в самом начале работы скрипта, а значит и session_start(); нужно помещать именно туда.

Спустя 6 минут, 42 секунды (31.08.2011 - 12:05) vagif написал(а):
оо,спасибо огромное))ошибка исчезла.а теперь хочу в info.php вписать
session_start();
echo $_SESSION['login'];


если правильно понял должен выйти логин?!если что,в ету тему постить буду ошибки этой работы.надеюсь ошибки не будут)

Спустя 2 минуты, 5 секунд (31.08.2011 - 12:07) l@pteff написал(а):
vagif, вот примерный скрипт авторизации, проанализируй:

/*
Файл проверки правильности
вводимых пользователем логина и пароля (авторизации)
*/


$login_auth = trim($_POST['login_auth']);
$password_auth = trim(md5($_POST['password_auth']));

/*Подключение файла с настройками для доступа к базе данных*/
require_once 'podkl.php';

$result = mysql_query("select * from users where login='$login_auth' and password = '$password_auth'");
if (mysql_num_rows($result)==0) {
echo "<span class='error'>Неверная комбинация логин-пароль.</span>";
exit;
}

$_SESSION['login_auth']=$login_auth;
$_SESSION['password_auth']=$password_auth;

setcookie('valid_user', $_SESSION['login_auth']);
setcookie('valid_passw', $_SESSION['password_auth']);

А проверку заполненности полей ввода, длины пароля и т.д. можно делать и на клиентской стороне с помощью js

Спустя 15 минут, 35 секунд (31.08.2011 - 12:23) m4a1fox написал(а):
Уважаемый l@pteff, есть баг маленький в вашем скрипте, а точнее вот тут

$result = mysql_query("select * from users where login='$login_auth' and password = '$password_auth'");


можно не напрягаясь иньекцию сделать.
ИМХО вот так делаю

$result = mysql_query("SELECT * FROM `users`
WHERE `login`='"
mysql_real_escape_string($login_auth)"' and `password` = '"mysql_real_escape_string($password_auth)"' LIMIT 1'
"
);

Спустя 1 час, 52 минуты, 53 секунды (31.08.2011 - 14:16) vagif написал(а):
опять проблемка(не буду создавать тему,так как ето ещо связано с той работой.почему у меня кнопка delete(где-то в конце) никак не выходит?вот код
<?
if(session_start()){
echo "<div align=right valign=top>hello\n";
echo $_SESSION[login];
print "</br>\n";
print "<form action=\"\" method=get>\n";
print "<input type=\"submit\" value=\"go\" name=\"go\">\n";
echo "</div>\n";}
$go=$_GET['go'];
if(isset($go)){
session_destroy();
}
?>
<html>
<
head>
<
title>users</title>
</
head>
<
body>
<?
$users=$_GET['users'];
$del=$_GET['delete'];
if(isset($users) && isset($del)){
$b=count($users);
$i=0;
while($i<$b){
$c=$users[$i];
$i++;
$sql="DELETE FROM `users` WHERE `login` = '$c' ";
$result=mysql_query($sql) or die (mysql_error());
}}
mysql_connect("localhost","parolva8","0uFN9lFQ") or die (mysql_error());
mysql_select_db("parolva8") or die (mysql_error());
$res=mysql_query("SELECT * FROM `users` ") or die (mysql_error());

echo "<table border=10><tr><td>name</td><td>login</td><td>password</td><td& gt;delete</td></tr>\n";
while($row=mysql_fetch_array($res) or die (mysql_error())){
echo "<tr><td>".$row[name]."</td><td>".$row[login]."</td><td>".$row[password]."</td>\n";?><td><input name="users" type="checkbox" value=<?echo $row[login];?>><?

}
echo "</table>\n";
?><input type="submit" value="delete" name="delete"><?
echo "</form>\n";
?>
</body>

</
html>


_____________
хороший программист должен знать-он тоже когда-то ничего не знал.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.