|
Вопрос по php/MySQL
|
| Автор |
Сообщение |
girafenok Хостинг — это наше всё!


Зарегистрирован: 17.11.2007 Сообщения: 158
13289 
|
Добавлено: Сб, 18 Окт, 2008 15:33 Заголовок сообщения: |
|
|
Исправление
| Код: | | $sqlqueryauth = "SELECT `password` FROM `users` WHERE `username`=`$userlogin` AND `password` == `$userpass`"; |
Код формы в студию!  |
|
| Вернуться к началу |
|
 |
[LP]LordPro.teus $a ||= 5;


Зарегистрирован: 26.07.2007 Сообщения: 3303
37521 
|
Добавлено: Сб, 18 Окт, 2008 15:38 Заголовок сообщения: |
|
|
| Код: | | AND `password` == `$userpass` |
==? _________________
  |
|
| Вернуться к началу |
|
 |
uforum $a ||= 5;


Зарегистрирован: 22.01.2008 Сообщения: 715 Откуда: Литва 4862 
|
Добавлено: Сб, 18 Окт, 2008 15:39 Заголовок сообщения: |
|
|
girafenok
Спасибо
| Код: | if ($authenter = 1)
{
echo "<a href=\"http://$livesiteurl/index.php?logout=1\">$logout</a><br>";
}
else
{
?>
<td class="loginform"
<form action="http://<?php echo $livesiteurl ?>/index.php" method="POST">
<p><?php echo $enterloginmin ?><br>
<input type="text" name="userlogin" value="<?php echo $_POST['userlogin'] ?>"></p>
<p><?php echo $enterpasswordmin ?>
<input type="password" name="password" value="<?php echo md5($_POST['userpassword']) ?>"></p>
<br>
<input type="submit" Value="<?php echo $send ?>"><br> |
_________________
http://uforum.org.ua/
Всё про ОС в широком формате
http://bmw3.org.ua/
Всё про BMW 3 и 1 серии |
|
| Вернуться к началу |
|
 |
[LP]LordPro.teus $a ||= 5;


Зарегистрирован: 26.07.2007 Сообщения: 3303
37521 
|
Добавлено: Сб, 18 Окт, 2008 15:41 Заголовок сообщения: |
|
|
| Код: | | <input type="password" name="password" value="<?php echo md5($_POST['userpassword']) ?>"> |
Что за бред?.. _________________
  |
|
| Вернуться к началу |
|
 |
uforum $a ||= 5;


Зарегистрирован: 22.01.2008 Сообщения: 715 Откуда: Литва 4862 
|
Добавлено: Сб, 18 Окт, 2008 15:42 Заголовок сообщения: |
|
|
[LP]LordPro.teus
Да точно бред
через 1 мин
Всё поправил
| Код: | $userpassn = $_POST['password'];
$userpass = strip_tags($userpassn);
<input type="password" name="password" value="<?php echo $_POST['userpassword'] ?>"></p> |
_________________
http://uforum.org.ua/
Всё про ОС в широком формате
http://bmw3.org.ua/
Всё про BMW 3 и 1 серии |
|
| Вернуться к началу |
|
 |
Gosudar Хостинг — это наше всё!

Зарегистрирован: 08.04.2007 Сообщения: 169
2400 
|
Добавлено: Сб, 18 Окт, 2008 17:46 Заголовок сообщения: |
|
|
Всё в корне не правильно. Двойка. Родители в школу.
Вот обалденная инфа для изучения в том числе для вашего случая http://phpfaq.ru/sessions |
|
| Вернуться к началу |
|
 |
uforum $a ||= 5;


Зарегистрирован: 22.01.2008 Сообщения: 715 Откуда: Литва 4862 
|
Добавлено: Вс, 19 Окт, 2008 09:01 Заголовок сообщения: |
|
|
Изменил скрипт добавил сесии
| Код: | //Check authorization
$gelogoutnn = $_GET[logout];
$gelogoutn = strip_tags($gelogoutn);
$gelogout = htmlspecialchars($gelogoutn);
if ($_SESSION['authenter'] = 1)
{
$authenter = 1;
}
else
{
$authenter = 0;
if ((isset($_POST['userlogin']))&&(isset($_POST['password'])))
{
$userpassnn = $_GET['password'];
$userpassn = strip_tags($userpassn);
$userpass = htmlspecialchars($userpassn);
$userloginn = strip_tags($_GET['userlogin']);
$userlogin = htmlspecialchars($userloginn);
$sqlqueryauth = "SELECT * FROM `users` WHERE `username`='$userlogin' AND `password`='$userpass'";
$resauth = mysql_query($sqlqueryauth, $linkmain) or trigger_error(mysql_error().$sqlqueryauth, $linkmain);
if ($rowauth = mysql_fetch_assoc($resauth))
{
session_start();
$_SESSION['user_name'] = $rowauth['username'];
$_SESSION['authenter']=$authenter;
$_SESSION['userpass']=$userpass;
$_SESSION['userloginn']=$userloginn;
$_SESSION[' userlogin']=$userlogin;
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
$authenter = 1;
}
}
}
//Logout
if (isset($gelogout) AND $gelogout==1)
{
session_start();
session_destroy();
$userpass = 0;
$userloginn = 0;
$userlogin = 0;
$authenter = 0;
}
//Check session
if (isset($_REQUEST[session_name()])) session_start();
if (isset($_SESSION['user_name']) AND $_SESSION['ip'] == $_SERVER['REMOTE_ADDR']) return;
else
{
$authenter = 0;
} |
Но теперь всё время 0
и в форме авторизации появляутся введёный username _________________
http://uforum.org.ua/
Всё про ОС в широком формате
http://bmw3.org.ua/
Всё про BMW 3 и 1 серии |
|
| Вернуться к началу |
|
 |
Alek$ $a ||= 5;


Зарегистрирован: 24.11.2007 Сообщения: 879
24007 
|
|
| Вернуться к началу |
|
 |
uforum $a ||= 5;


Зарегистрирован: 22.01.2008 Сообщения: 715 Откуда: Литва 4862 
|
|
| Вернуться к началу |
|
 |
Веденин $a ||= 5;


Зарегистрирован: 17.05.2007 Сообщения: 1068 Откуда: Самара 4489 
|
Добавлено: Вс, 19 Окт, 2008 10:18 Заголовок сообщения: |
|
|
Во - первых:
| Код: | $_SESSION['user_name'] = $rowauth['username'];
$_SESSION['authenter']=$authenter;
$_SESSION['userpass']=$userpass;
$_SESSION['userloginn']=$userloginn;
$_SESSION[' userlogin']=$userlogin;
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
$authenter = 1; |
стоит переписать как
| Код: |
$authenter = 1;
$_SESSION['user_name'] = $rowauth['username'];
$_SESSION['authenter']=$authenter;
$_SESSION['userpass']=$userpass;
$_SESSION['userloginn']=$userloginn;
$_SESSION[' userlogin']=$userlogin;
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
|
иначе получается $_SESSION['authenter'] НИКОГДГА не будет равен 1.
Во - вторых, этот код бредовый
| Код: | | $resauth = mysql_query($sqlqueryauth, $linkmain) or trigger_error(mysql_error().$sqlqueryauth, $linkmain); |
mysql_query возращает объект типа запись с которым вы выполняете логические операции, надо просто
| Код: | | $resauth = mysql_query($sqlqueryauth, $linkmain); |
P.S. Вообще не проще поставить отладочный код во всех критичных местах программы? _________________ Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг, спортивная, энциклопедическая, поиск музыки и видео и много других |
|
| Вернуться к началу |
|
 |
Alek$ $a ||= 5;


Зарегистрирован: 24.11.2007 Сообщения: 879
24007 
|
Добавлено: Вс, 19 Окт, 2008 10:23 Заголовок сообщения: |
|
|
uforum
Нет, ну вы меня поражаете. Просто просмотреть собственный код на предмет ошибок не пробовали?
| Цитата: | //Check authorization
$gelogoutnn = $_GET[logout];//Где кавычки?
$gelogoutn = strip_tags($gelogoutn);
$gelogout = htmlspecialchars($gelogoutn);
if ($_SESSION['authenter'] = 1)
{
$authenter = 1;
}
else
{
$authenter = 0;
if ((isset($_POST['userlogin']))&&(isset($_POST['password'])))
{
$userpassnn = $_GET['password'];
$userpassn = strip_tags($userpassn);
$userpass = htmlspecialchars($userpassn);
$userloginn = strip_tags($_GET['userlogin']); // Вы уж определитесь, откуда будете данные получать...
$userlogin = htmlspecialchars($userloginn);
$sqlqueryauth = "SELECT * FROM `users` WHERE `username`='$userlogin' AND `password`='$userpass'";
$resauth = mysql_query($sqlqueryauth, $linkmain) or trigger_error(mysql_error().$sqlqueryauth, $linkmain);
if ($rowauth = mysql_fetch_assoc($resauth))
{
session_start();
$_SESSION['user_name'] = $rowauth['username'];
$_SESSION['authenter']=$authenter; //$authenter = 0; Какой смысл?
$_SESSION['userpass']=$userpass;
$_SESSION['userloginn']=$userloginn;
$_SESSION[' userlogin']=$userlogin;
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
$authenter = 1;
}
}
}
//Logout
if (isset($gelogout) AND $gelogout==1)
{
session_start();
session_destroy();
$userpass = 0;
$userloginn = 0;
$userlogin = 0;
$authenter = 0;
}
//Check session
if (isset($_REQUEST[session_name()])) session_start(); //Сначала $_POST, потом $_GET, а теперь $_REQUEST. Как-то неправильно, не находите? Да и session_start() надо вызывать до session_name(). В общем, корявая строчка.
if (isset($_SESSION['user_name']) AND $_SESSION['ip'] == $_SERVER['REMOTE_ADDR']) return;
else
{
$authenter = 0;
} |
Я уже молчу о стиле оформления кода.
Ни за что не поставлю себе такую цмс... И остальным не советую. _________________ Самая страшная ошибка - это ошибка без видимых причин и конкретных последствий.
phpBB3 [db_update.php generator]
phpBB3 [Russian]
Антисоциальный блог |
|
| Вернуться к началу |
|
 |
[LP]LordPro.teus $a ||= 5;


Зарегистрирован: 26.07.2007 Сообщения: 3303
37521 
|
Добавлено: Вс, 19 Окт, 2008 10:25 Заголовок сообщения: |
|
|
...говорил аффтару не браться за сие занятие... впустую гробит и свое, и уважаемых форумчан время... там еще ошибок и ошибок... _________________
  |
|
| Вернуться к началу |
|
 |
Веденин $a ||= 5;


Зарегистрирован: 17.05.2007 Сообщения: 1068 Откуда: Самара 4489 
|
Добавлено: Вс, 19 Окт, 2008 11:04 Заголовок сообщения: |
|
|
Вот код скрипта с отладочной инфой в котором исправлено все указанные ошибки, сразу предупреждаю код не тестил и конечно после отладки все echo надо убрать
$userpass = isset($_GET['password'])?strip_tags(htmlspecialchars($_GET['password'])):"";
$userlogin = isset($_GET['userlogin'])?strip_tags(htmlspecialchars($_GET['userlogin'])):"";
echo "$userpass <br> $userlogin <br>";
if (isset($_GET['logout']) AND $_GET['logout']==1) {
echo "logout";
session_start(); session_destroy();
} if ($_SESSION['authenter'] == 0 && strlen($userpass)>0 && strlen($userlogin)>0){
$sqlqueryauth = "SELECT * FROM `users` WHERE `username`='$userlogin' AND `password`='$userpass'";
echo "$sqlqueryauth <br>";
$resauth = mysql_query($sqlqueryauth, $linkmain);
$rowauth = mysql_fetch_assoc($resauth);
echo $rowauth['username'] ."<br>";
echo mysql_error();
if(strlen($rowauth['username'])>1){
session_start();
$_SESSION['user_name'] = $userlogin;
$_SESSION['authenter'] = 1;
$_SESSION['userpass'] = $userpass;
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
echo "authenter = 1 <br>";
}
}
$authenter = $_SESSION['authenter']==1?1:0;
echo "authenter = $authenter <br>";
P.S. В результате в $_SESSION будут хранится данные пользователя и $authenter = 1 при успешной авторизации. _________________ Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг, спортивная, энциклопедическая, поиск музыки и видео и много других |
|
| Вернуться к началу |
|
 |
Alek$ $a ||= 5;


Зарегистрирован: 24.11.2007 Сообщения: 879
24007 
|
|
| Вернуться к началу |
|
 |
uforum $a ||= 5;


Зарегистрирован: 22.01.2008 Сообщения: 715 Откуда: Литва 4862 
|
Добавлено: Вс, 19 Окт, 2008 12:04 Заголовок сообщения: |
|
|
Веденин
ААА почти работает только
| Код: | Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at localhost/fc:25) in localhost/fc/index.php on line 60
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at localhost/fc:25) in localhost/fc/index.php on line 60 |
_________________
http://uforum.org.ua/
Всё про ОС в широком формате
http://bmw3.org.ua/
Всё про BMW 3 и 1 серии |
|
| Вернуться к началу |
|
 |
|