|
|
|
| Злравствуйте!
Скажите пожалуйста, как нужно отредактировать страницу авторизации, чтобы при удачном входе по логину и паролю писало не 'Авторизация прошла успешно', а к примеру Вашь E-mail такой то. И если не сложно как сделать чтобы при авторизации появлялась кнопочка выход (работа с сессиями как я понял). Спасибо
База:
CREATE TABLE `users` (
`id` INT( 255 ) NOT NULL AUTO_INCREMENT ,
`login` VARCHAR( 255 ) NOT NULL ,
`password` VARCHAR( 255 ) NOT NULL ,
`email` VARCHAR( 255 ) NOT NULL ,
PRIMARY KEY ( `id` )
);
|
Авторизация по запросу:
<?php
include_once("connect.php");
if(isset($_POST['auth_submit']))
{
$login = $_POST['login'];
$password = $_POST['password'];
$query = "SELECT id, login, password
FROM users
WHERE login ='{$login}' AND password='{$password}'
LIMIT 1";
$sql = mysql_query($query) or die(mysql_error());
if (mysql_num_rows($sql) == 1)
echo 'Авторизация прошла успешно';
else
echo 'Неправильное имя или пароль';
}
?>
|
| |
|
|
|
|
|
|
|
для: home-studia
(11.02.2009 в 18:44)
| | Из вашего кода
<?php
if (mysql_num_rows($sql) == 1) {
$res=mysql_query("select email from users where login=$login");
$email = mysql_result($res, 0);
echo "Вашь E-mail $email";
}
?>
|
А кнопку можно сделать так: если используются сессии, то
.....
<input type="submit" value="Выход" name="exit">
.....
<?
if (isset($_POST[exit])){
[b]Уничтожение сессии[/b]
}
?>
|
| |
|
|
|
|
|
|
|
для: home-studia
(11.02.2009 в 18:44)
| | Попробовал вставить, получилось вот что:
include_once("connect.php");
if(isset($_POST['submit']))
{
$login = $_POST['login']; //Имя пользователя, введенное в форму
$password = $_POST['password']; // Пароль введенный в форму
//Запрос из базы данных по проверки существования в базе введенного пользователя
//с введенным паролем
$query = "SELECT id, login, password, email
FROM users
WHERE login ='{$login}' AND password='{$password}'
LIMIT 1";
$sql = mysql_query($query) or die(mysql_error()); //Выполняется запрос
if (mysql_num_rows($sql) == 1) {
$res=mysql_query("select password from users where login=$login");
$email = mysql_result($res, 0);
echo "Вашь E-mail $password";
}
else
echo 'Неправильное имя или пароль';
}
?>
|
Столбец E-mail не выводится по запросу :-((( Попробовал вывести к примеру столбик логин, все хорошо, а вот с мылом проблема...почему? | |
|
|
|
|
|
|
|
для: home-studia
(12.02.2009 в 06:24)
| | $res=mysql_query("select password from users where login=$login"); -смысл этого запроса????
$email = mysql_result($res, 0);
echo "Вашь E-mail $password"; -А это что?....
[поправлено модератором] | |
|
|
|
|
|
|
|
для: oli
(12.02.2009 в 17:35)
| | Здесь ошибки никакой нет, я привел пример как вывожу поле с паролем, с логином тоже все окей, но если пытаюсь вывести поле с e-mail то ничего не происходит. | |
|
|
|
|
|
|
|
для: home-studia
(12.02.2009 в 06:24)
| |
<?php
$sql = mysql_query($query) or die(mysql_error()); //Выполняется запрос
$sql_1 = mysql_fetch_array($sql);//Возвращает массив с обработанным рядом результата запроса
if (mysql_num_rows($sql) == 1) { //а правильно ли?
//$res=mysql_query("select password from users where login=$login"); действительно лишний запрос
echo "Ваш E-mail -".$sql_1['email'];
}
?>
|
попробуй так, должно получится...:)
а с паролем или логином получилось у тебя скорей всего потому,что ты их определил выше. | |
|
|
|
|
|
|
|
для: Slo_Nik
(13.02.2009 в 04:27)
| | Если в таблице e-mail в уголках лежит, браузер его тегом посчитает, и на экран не выведет.
echo "Ваш E-mail -". htmlspecialchars($sql_1['email']);
|
| |
|
|
|
|
|
|
|
для: Trianon
(13.02.2009 в 09:18)
| | может и так, но тогда странно получается, зачем заносит в БД email в таком виде?
если использовать стандартную форму при регистрации, то как надо обработать данные из этой формы, что бы они в базу занеслись обрамлённые уголками? | |
|
|
|
|
|
|
|
для: Slo_Nik
(13.02.2009 в 11:30)
| | не исключено. что в таком виде и заносили.
е-мэйл в уголах для уазания в почтовых клиентах вполне валиден.
Собственно, это всё область догадок. Как там у автора, кроме него никто не знает. | |
|
|
|
|
|
|
|
для: Trianon
(13.02.2009 в 11:36)
| | в том то и дело, что автор пропал, ни слуху ни духу от него :)
хорошо было бы узнать от автора как он решил свою проблему. | |
|
|
|
|
|
|
|
для: Slo_Nik
(13.02.2009 в 12:01)
| | К сожаление не помог ни первый:
echo "Ваш E-mail -".$sql_1['email'];
|
ни второй вариант:
echo "Ваш E-mail -". htmlspecialchars($sql_1['email']);
|
Поле с e-mail (varchar(255)) как не выводилось так и не выводится :-(
Давайте начнем с начала, я расскажу что собственно нужно получить в итоге.
Допустим у нас есть несколько страничек это index.php, news.php, reg.php и infouser.php
index.php // Главная страница
news.php // страничка с какой-нибудь информацией
reg.php // страничка на которой мы будем производить регистрацию
infouser.php // страничка на которой пользователь может просмотреть свою информацию и по возможности изменить её.
Цель: сделать так чтобы когда мы заходим на главную страничку index.php было поле где нужно ввести логин и пароль для авторизации, если мы вводим их правильно то оставшись на этой же страничке у нас исчезают эти поля, а вместо них пишет к примеру :
Добро пожаловать, (логин).
Персональная информация (infouser.php)
Выход (при нажатии мы сбрасываем авторизацию и вновь появляются поля с просьбой ввести логин и пароль).
Пройдя допустим на странице index.php авторизацию и перейдя по линку на страницу news.php нас также приветствует как и на прошлой страничке.
А когда пользователь переходит на страничку infouser.php ему пишет что его ник такой-то, пароль такой-то изменить вы можите нажав сюда.
Помогите пожалуйста уже несколько суток сижу, облазил кучу сайтов, везде либо варианты совсем не подходят, либо с кучей ошибок –(( Пробовал даже CMS урезать оставив только эти функции, но это кромешный ад :-) | |
|
|
|
|
|
|
|
для: home-studia
(13.02.2009 в 21:29)
| | >Поле с e-mail (varchar(255)) как не выводилось так и не выводится :-(
Приведите пример, какие значения находятся в поле email. | |
|
|
|
|
|
|
|
для: AcidTrash
(13.02.2009 в 21:59)
| | admin@mail.mail | |
|
|
|
|
|
|
|
для: AcidTrash
(13.02.2009 в 21:59)
| | Можете подсказать как реалезовать вышесказанно? | |
|
|
|
|
|
|
|
для: home-studia
(13.02.2009 в 22:14)
| | Хм.
Приведите пример конечного кода, который вы используете. | |
|
|
|
|
|
|
|
для: AcidTrash
(13.02.2009 в 22:38)
| | К примеру
include_once("connect.php");
if(isset($_POST['submit']))
{
$login = $_POST['login']; //Имя пользователя, введенное в форму
$password = $_POST['password']; // Пароль введенный в форму
//Запрос из базы данных по проверки существования в базе введенного пользователя
//с введенным паролем
$query = "SELECT id, login, password, email
FROM users
WHERE login ='{$login}' AND password='{$password}'
LIMIT 1";
$sql = mysql_query($query) or die(mysql_error()); //Выполняется запрос
$sql_1 = mysql_fetch_array($sql);//Возвращает массив с обработанным рядом результата запроса
if (mysql_num_rows($sql) == 1) { //а правильно ли?
//$res=mysql_query("select password from users where login=$login"); действительно лишний запрос
echo "Ваш E-mail -".$sql_1['email'];
}
else
echo 'Неправильное имя или пароль';
}
?>
|
| |
|
|
|
|
|
|
|
для: home-studia
(13.02.2009 в 22:44)
| | Но если честно, меня сейчас очень интерисует, как такую авторизацию сделать на сессиях, как я писал выше, если несложно, напишите код. | |
|
|
|
|
|
|
|
для: home-studia
(13.02.2009 в 22:45)
| | это только пример, так сказать натырка :)
<?php
session_start();
if(!empty($_POST['login'] && $_POST['password'])){
// делаем запрос к БД
// и сверяем введённый пароль с хешем пароля, который хранится в БД
// и если пароли совпадают
$login = $_SESSION['login'];
$pass = $_SESSION['password'];
echo "Привет".$login;
}
// если данные не совпадают с данными в БД
else {
// выводим форму для ввода пароля и логина
}
?>
|
и посмотри в статьях на сайте, там должно быть подробное описание как сделать правильно
и ещё.
напиши как ты заносишь данные при регистрации в БД, сам запрос.
и в строке
<?php
$sql = mysql_query($query) or die(mysql_error()); //Выполняется запрос
?>
|
убери or die()mysql_error()
и напиши
<?php
if(!sql) echo "ошибка при обращении к БД";
?>
и посмотри что получится
|
| |
|
|
|
|
|
|
|
для: Slo_Nik
(13.02.2009 в 23:05)
| | Спасибо :-) Но это ведь просто пример регистрации сессии. Как сделать чтобы проверялось есть ли активная сессия и если да, то уберались поля для ввода логина и пароля и наоборот при отсутствии предлагалось авторизироваться? | |
|
|
|
|
|
|
|
для: home-studia
(13.02.2009 в 23:10)
| | Регистрация по запросу:
<?
include_once("connect.php");
if (isset($_POST['submit']))
{
if(empty($_POST['login']))
{
echo 'Вы не ввели логин';
}
elseif(empty($_POST['password']))
{
echo 'Вы не ввели пароль';
}
elseif(empty($_POST['password2']))
{
echo 'Вы не ввели подтверждение пароля';
}
elseif($_POST['password'] != $_POST['password2'])
{
echo 'Введенные пароли не совпадают';
}
elseif(empty($_POST['email']))
{
echo 'Вы не ввели E-mail';
}
else
{
$login = $_POST['login'];
$password = $_POST['password'];
$password2 = $_POST['password2'];
$email = $_POST['email'];
$query = "SELECT `id`
FROM `users`
WHERE `login`='{$login}' AND `password`='{$password}'
";
$sql = mysql_query($query) or die(mysql_error());
if (mysql_num_rows($sql) > 0)
{
echo 'Такой логин уже существует';
}
else
{
$query = "INSERT INTO users(login , password , email )
VALUES ('$login', '$password', '$email')";
$result = mysql_query($query) or die(mysql_error());;
echo 'Регистрация успешно прошла';
}
}
}
?>
|
| |
|
|
|
|
|
|
|
для: home-studia
(13.02.2009 в 23:10)
| | да не просто пример, а если вписать запрос и проверку пароля это и есть авторизация.
а проверку на других станицах ты можешь сделать такой
<?php
session_start();
if(!isset($_SESSION['login']) && !isset($_SESSION['password'])){
header ("location:./ переход на страницу ввода пароля и логина");
exit();
}
?>
|
хотя этот вариант не идеален | |
|
|
|
|
|
|
|
для: Slo_Nik
(13.02.2009 в 23:15)
| | Вариант с or die()mysql_error() не помог | |
|
|
|
|
|
|
|
для: home-studia
(13.02.2009 в 22:44)
| | ты просто скопировал, даже не смотрел, что копировал.
//$res=mysql_query("select password from users where login=$login"); действительно лишний запрос
я и ещё один человек тебе написали, что это лишний запрос, это первое.
if (mysql_num_rows($sql) == 1) { //а правильно ли?
я написал, что сомневаюсь, что ты правильно тут сделал, это второе.
значит попробуй сделать так
<?php
if (mysql_num_rows($sql) >0){
$arr = mysql_fetch_array($sql);
echo "<pre>";
print_r($arr);
echo "</pre?";
}
?>
|
и посмотри, что тебе выдаёт из базы данных, может это тебе поможет понять почему у тебя не выводит email, ведь ты начал с того, что не выводи email, заодно проверишь остальные данные какие выводит из БД.
Добейся сначала, что бы в БД и из неё все данные вводились/выводились корректно.
когда всё будет правильно, тогда и продожай дорабатывать скрипт.
p.s. тут я сам уже ошибся, не серчай
<?php
if(!$sql) echo "ошибка при обращении к БД";
?>
|
| |
|
|
|
|
|
|
|
для: Slo_Nik
(13.02.2009 в 23:45)
| | Спасибо, сейчас посижу попробую вставить по новому примеру.
Помоги пожалуйста рассписать вместе с подключение к СУБД свой пример:
<?php
session_start();
if(!empty($_POST['login'] && $_POST['password'])){
// делаем запрос к БД
// и сверяем введённый пароль с хешем пароля, который хранится в БД
// и если пароли совпадают
$login = $_SESSION['login'];
$pass = $_SESSION['password'];
echo "Привет".$login;
}
// если данные не совпадают с данными в БД
else {
// выводим форму для ввода пароля и логина
}
?>
|
У меня уже просто каша в голове:
<?php
include_once("connect.php");
session_start();
if(!empty($_POST['login'] && $_POST['password'])){
$query = "SELECT id, login, password, email
FROM users2
WHERE login ='{$login}' AND password='{$password}'
LIMIT 1";
$sql = mysql_query($query)
$sql_1 = mysql_fetch_array($sql);
// делаем запрос к БД
// и сверяем введённый пароль с хешем пароля, который хранится в БД
// и если пароли совпадают
$login = $_SESSION['login'];
$pass = $_SESSION['password'];
echo "Привет".$login;
}
// если данные не совпадают с данными в БД
else {
// выводим форму для ввода пароля и логина
echo "<form action=index.php>
<input type=text name= />
<input type=password name= />
<input type=submit value=Войти />
</form>"
}
?>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 00:05)
| | в совоём первом сообщении ты написал как ты создаёшь таблицу в БД "users", а в запросе ты обращаешься к таблице "users2".
<?php
if(!empty($_POST['login']) && !empty($_POST['password'])){
// не обязательно так делать, но если решил упростить запись login и password, то лучше проверить существование переменных.
//столкнулся с такой проблемой на одном бесплатном хостинге....
if(isset($_POST['login']))$login = $_POST['login'];
if(isset($_POST['password']))$password = $_POST['password'];
// ну и собственно запрос к БД
$query = "SELECT `id`, `login`, `password`, `email`
FROM `users2`
WHERE `login` ='{$login}' AND `password`='{$password}'
LIMIT 1";
......
$sql = mysql_query($query);
// если нельзя выполнить запрос
if(!$sql) echo "ошибка при обращении к БД".mysql_error();
// получаем кол-во записей
if(mysql_result($sql,0) > 0){
$_SESSION['login'] = $login;
$_SESSION['password'] = $password;
}
}
?>
|
пароль в БД не хранится в открытом виде, при помощи функции md5() получают хеш пароля, который и заносят в БД. потом введёный пароль сверяют с хешем из БД
<?php
".....
WHERE login ='$login' AND password='".md5($password)."'
?>
|
| |
|
|
|
|
|
|
|
для: Slo_Nik
(14.02.2009 в 00:43)
| | Посмотри пожалуйста, что неправильно?
<?php
include_once("connect.php");
session_start();
if(!empty($_POST['login']) && !empty($_POST['password'])){
// не обязательно так делать, но если решил упростить запись login и password, то лучше проверить существование переменных.
//столкнулся с такой проблемой на одном бесплатном хостинге....
if(isset($_POST['login']))$login = $_POST['login'];
if(isset($_POST['password']))$password = $_POST['password'];
// ну и собственно запрос к БД
$query = "SELECT `id`, `login`, `password`, `email`
FROM `users2`
WHERE `login` ='{$login}' AND `password`='{$password}'
LIMIT 1";
......
$sql = mysql_query($query);
// если нельзя выполнить запрос
if(!$sql) echo "ошибка при обращении к БД".mysql_error();
// получаем кол-во записей
if(mysql_result($sql,0) > 0){
$_SESSION['login'] = $login;
$_SESSION['password'] = $password;
echo "Привет".$login;
}
// если данные не совпадают с данными в БД
else {
// выводим форму для ввода пароля и логина
echo "<form action=index.php>
<input type=text name= />
<input type=password name= />
<input type=submit value=Войти />
</form>"
}
?>
|
а с именем таблицы все верно, я переименовал | |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 00:53)
| | в форме почему у тебя не присвоено значение name? не должно быть пустым!!!
как скрипт "поймёт" где логин, а где пароль?!
значения атрибутов type и value возьми или в аппострофы или кавычки и name тоже ... хотя это не по теме :)
убери в запросе фигурные скобки у login и password.
скрипт работает, email выводит ? если да, то всё правильно. если выдаёт какие то ошибки, то смотри в какой строке кода ошибка и пытайся устранить.
как заработает, будешь дальше дорабатывать скрипт.
p.s. в форме укажи какой методе передачи данных, если ты не указал метод, по умолчанию будет метод GET, а тебе нужен POST.
ну и в этой строке тебе надо заменить на $_SESSION['login']
echo "Привет".$login; | |
|
|
|
|
|
|
|
для: Slo_Nik
(14.02.2009 в 01:13)
| |
<?php
include_once("connect.php");
session_start();
if(!empty($_POST['login']) && !empty($_POST['password'])){
// не обязательно так делать, но если решил упростить запись login и password, то лучше проверить существование переменных.
//столкнулся с такой проблемой на одном бесплатном хостинге....
if(isset($_POST['login']))$login = $_POST['login'];
if(isset($_POST['password']))$password = $_POST['password'];
// ну и собственно запрос к БД
$query = "SELECT `id`, `login`, `password`, `email`
FROM `users2`
WHERE `login` ='$login' AND `password`='$password'
LIMIT 1";
......
$sql = mysql_query($query);
// если нельзя выполнить запрос
if(!$sql) echo "ошибка при обращении к БД".mysql_error();
// получаем кол-во записей
if(mysql_result($sql,0) > 0){
$_SESSION['login'] = $login;
$_SESSION['password'] = $password;
echo "Привет"$_SESSION['login'];
}
// если данные не совпадают с данными в БД
else {
// выводим форму для ввода пароля и логина
echo "<form action=index.php method=post>
<input type='text' name='login' >
<input type='password' name='password' >
<input type='submit' value=Войти >
</form>"
}
?>
|
Я привел это как пример, оно не хочет вообще страничку грузить с таким кодом. И если несложно исправь пример сам, я его скопирую и проверю. Спасибо. | |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 01:47)
| | При вставке такого кода, страничка прогружается только на:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=windows-1251"></HEAD>
<BODY style="ZOOM: 100%"></BODY></HTML>
|
| |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 01:54)
| | >При вставке такого кода, страничка прогружается только на:
>
>
><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
><HTML><HEAD>
><META http-equiv=Content-Type content="text/html; charset=windows-1251"></HEAD>
><BODY style="ZOOM: 100%"></BODY></HTML>
>
|
во-первых: как это понять?
во-вторых: какие ошибки выдаёт тебе? или просто выводит пустую страницу, без всяких записей? | |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 01:47)
| | что значит не хочет грузить? выдаёт ли какие то ошибки, предупреждения?
в connect.php у тебя правильно запрос на соединение с БД? | |
|
|
|
|
|
|
|
для: Slo_Nik
(14.02.2009 в 01:58)
| | В том то и дело, что никаких ошибок не выдает.
Вот что успевает загрузится и все:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=windows-1251"></HEAD>
<BODY style="ZOOM: 100%"></BODY></HTML>
|
код connect.php
<?php
$dblocation = "";
$dbname = "";
$dbuser = "";
$dbpasswd = "";
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
if (!$dbcnx)
{
echo( "<P> В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно. </P>" );
exit();
}
if (!@mysql_select_db($dbname, $dbcnx))
{
echo( "<P> В настоящий момент база данных не доступна, поэтому корректное отображение страницы невозможно. .</P>" );
exit();
}
?>
|
| |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 02:05)
| |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=windows-1251"></HEAD>
<BODY style="ZOOM: 100%"></BODY></HTML>
|
это если посмотреть код страницы при загрузке, грузится только самый верх получается страницы. Такое бывает когда не может найти к примеру при include файл, но файл connect на месте, следовательно причина в ином. | |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 02:09)
| | если ты имеешь ввиду просмотр исходного кода в браузере, то ты и не увидешь кода php.
почему? почитай самые основы языка, до объяснения синтаксиса.
ты ни когда не увидешь код php в браузере, только результат работы этого кода :)
посмотрел всё что мы тут с тобой наворотили, есть несколько ошибок.
одна из них это то, что при проверяя массив POST на пустоту,я тебе не правильно подсказал.
пишем
<?php
if(!empty($_POST['login']) && !empty($_POST['password'])){
......................................
}
?>
|
и получается, что в группу выражений, которые мы объеденили фигурными скобками, вписали вывод формы, а значит она ни когда не может быть выведена в окно браузера, т.к. поля для ввода логина и пароля изначально пусты :)
надо исправить вот так(привожу кусок кода, так что будь внимателен когда будешь копировать его)
<?php
...................................................................................................................................
echo "Привет"$_SESSION['login'];
}
}
// если данные не совпадают с данными в БД
else {
// выводим форму для ввода пароля и логина
echo "<form action=index.php method=post>
<input type='text' name='login' >
<input type='password' name='password' >
<input type='submit' value=Войти >
</form>" ;
}
?>
|
многоточием я обозначил пропущеный код.
исправь эту ошибку и проверь, что получится.
ну а остальные ошибки попробуй устранить сам :)
по поводу connect.php
ты всем переменным присвоил пустую строку, потом пытаешься соедениться с БД, полагаясь на то, что скрипт сам отгадает какая у тебя БД, какой хост и какой юзер.... :) | |
|
|
|
|
|
|
|
для: Slo_Nik
(14.02.2009 в 02:31)
| | Чувак, не злись только :-) Но я не полный новичек в этом, конечно же я не увижу код php в браузере, потому проверяю вставкой обычного текста, здесь явно видно что загрузка страницы обрывается.
По поводу подключения к базам, конечно я вставил поля пустыми, или ты предлагешь разместить тут мой логин, пароль, IP сервера?-)))
Сейчас попробую поправить, то что нашли из ошибок. | |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 02:37)
| | Вот, смотри что получилось все верно? (но грузиться всеравно не хочет)
<?php
include_once("connect.php");
session_start();
if(!empty($_POST['login']) && !empty($_POST['password'])){
if(isset($_POST['login']))$login = $_POST['login'];
if(isset($_POST['password']))$password = $_POST['password'];
$query = "SELECT `id`, `login`, `password`, `email`
FROM `users2`
WHERE `login` ='$login' AND `password`='$password'
LIMIT 1";
$sql = mysql_query($query);
if(!$sql) echo "ошибка при обращении к БД".mysql_error();
if(mysql_result($sql,0) > 0){
$_SESSION['login'] = $login;
$_SESSION['password'] = $password;
echo "Привет"$_SESSION['login'];
}
}
else {
echo "<form action=index.php method=post>
<input type='text' name='login' >
<input type='password' name='password' >
<input type='submit' value=Войти >
</form>" ;
}
?>
|
| |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 02:47)
| | тупо скопировал, то что ты написал, всё загрузилось, но выдало ошибку, это естественно, т.к. они есть.
исправил и всё загрузилось, появилась форма ввода даных, вот только на работоспособность не проверял, облом таблицу под это создавать...
у тебя ошибки какие то выводит в браузер, типа
Parse error: parse error, unexpected T_VARI.................?
если нет, то это уже настройки самого php проверь на вывод ошибок.
ну а если выводит, то тебе должно ясно сказать в какой строке и какая ошибка. | |
|
|
|
|
|
|
|
для: Slo_Nik
(14.02.2009 в 02:55)
| | Интересно, на хостинге не показывало вообще никаких ошибок, просто обрывалась загрузка, попробовал закинуть на дэнвер, выбило ошибку Parse error: syntax error, unexpected T_VARIABLE, expecting ',' в 23 строке, как ты исправил? | |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 02:37)
| | я и не думал злиться, но ты приводишь пример кода, который не будет работать, и что я должен подумать?
ни кто не заставляет тебя писать истинные данные, но даже и если ты вписал свой логин или имя базы данных, ну и что? или ты думаешь, что на просторах паутины реально найти тебя по этим данным? :)
что бы тебя найти, надо по крайней мере знать адрес твоего сайта, а их, этих сайтов не один миллион по свету :) | |
|
|
|
|
|
|
|
для: Slo_Nik
(14.02.2009 в 02:48)
| | Оно то так, но как говорится кто знает, лучше перестраховаться чем потом плакать :-) Посмотри еще пожалуйста, не работает код. | |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 02:52)
| | если ты говоришь о возможности взлома твоего сайта, то этот код дырявый как решето :)
мы пока говорили о том, что бы заставить его работать, а уж потом доводить его до ума.
посмотреть я на него посмотрел. но вот заставить его работать ты должен сам. попытайся запустить, что бы он выводил из базы логин и проверял пароль. вот когда у тебя будет куча ошибок после кучи проб, тогда и будем думать дальше.
я то смогу его довести его до ума, по крайней мере, что бы он выводил в окно браузера то, что тебе надо, т.е. логин, email и т.д.
НО ТЫ ТО НЕ НАУЧИШЬСЯ ЕСЛИ Я ЕГО БУДУ ЗАПУСКАТЬ!
Не обижайся, но я сам через это прошёл, пока не помучаешься не поймёшь даже и приблизительно как это должно работать....
попробуй пока сам.
ведь форма выводится, с БД соединяется, осталось только сделать что бы выводил данные в браузер.
правда потом будет вопрос безопасности скрипта, но это другая тема разговора.
p.s. ради интереса я его запущу,что бы он выводил из БД данные, а ты потом напиши, что у тебя получилось. | |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 02:52)
| | код работает, всё выводит из базы, ищи ошибки у себя, если он не работает | |
|
|
|
|
|
|
|
для: Slo_Nik
(14.02.2009 в 03:26)
| | Изменил до такого вида:
<? session_start(); ?>
<?php
include_once("connect.php");
if(!empty($_POST['login']) && !empty($_POST['password'])) {
if(isset($_POST['login']))$login = $_POST['login'];
if(isset($_POST['password']))$password = $_POST['password'];
$query = "SELECT `id`, `login`, `password`, `email`
FROM `users2`
WHERE `login` ='$login' AND `password`='$password'
LIMIT 1";
$sql = mysql_query($query);
if(!$sql) echo "ошибка при обращении к БД".mysql_error();
if(mysql_result($sql,0) > 0){
$_SESSION['login'] = $login;
$_SESSION['password'] = $password;
echo "Привет".$login;
}
}
else {
echo "<form action=index.php method=post>
<input type='text' name='login' >
<input type='password' name='password' >
<input type='submit' value=Войти >
</form>" ;
}
?>
|
Пришлось вернуть снова echo "Привет".$login; потому как с echo "Привет"$_SESSION['login']; выбивало ошибку. | |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 03:41)
| | во-первых, ты читал что сказано в ошибке?
во-вторых, проверим твою внимательность, нади отличие в этих строках
echo "Привет".$login;
и
echo "Привет"$_SESSION['login'];
если найдёшь отличие, то будет работать и с $_SESSION['login'] | |
|
|
|
|
|
|
|
для: Slo_Nik
(14.02.2009 в 03:53)
| | Да, отличие в точке нашел, исправил, все работает, спасибо. Вроде как с этим отмучались. Как теперь сделать так что к примеру: у нас есть ссылка на страничку index2.php в нее я вставляю такой же код как и здесь, но когда перехожу на нее у меня всеравно просит по новому ввести лигин и пароль, как сделать чтобы авторизировавшись на одной страничке, авторизация оставалась и на остальных? | |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 04:02)
| | тебе надо почитать что касается сессий
вот ссылочка
http://phpfaq.ru/sessions
ну а вообще, на других страницах пишешь
session_start();
эта функция инициирует сессию.Любая страница,использующаая сессии, должна иметь в начале вызов этой функции и должна вызываться до начала вывода информации в окно браузера. | |
|
|
|
|
|
|
|
для: Slo_Nik
(14.02.2009 в 04:20)
| | Прочитал, по статье получается что вставив точно такой же код как у нас получился и на второй странице, при переходе на нее должно не требовать логин и пароль, но происходит обратное =( | |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 04:41)
| | не надо вставлять точно такой же код!
опять же ты не внимательно прочитал статью.
вот цитата с той статьи
Для того, чтобы иметь доступ к переменным сессии на любых страницах сайта, надо написать ТОЛЬКО ОДНУ(!) строчку в самом начале КАЖДОГО файла, в котором нам нужны сессии:
session_start();
И далее обращаться к элементам массива $_SESSION. Например, проверка авторизации будет выглядеть примерно так:
session_start();
if (!$_SESSION['authorized']<>1) {
header("Location: /auth.php");
exit;
}
если условие не выполняется, делают переход(автоматом) на страницу с формой для ввода пароля/логина, если условие выполняется идёт выполнение дальнейшего кода.
вот ещё одна ссылка
http://www.softtime.ru/bookphp/gl8_1.php и не ленись, я уже писал тебе, что бы ты почитал статьи на этом сайте | |
|
|
|
|
|
|
|
для: Slo_Nik
(14.02.2009 в 04:58)
| | Кто-нибудь может сказать почему здесь:
<? session_start(); ?>
<?php
include_once("connect.php");
if(!empty($_POST['login']) && !empty($_POST['password'])) {
if(isset($_POST['login']))$login = $_POST['login'];
if(isset($_POST['password']))$password = $_POST['password'];
$query = "SELECT `id`, `login`, `password`, `email`
FROM `users`
WHERE `login` ='$login' AND `password`='$password'
LIMIT 1";
$sql = mysql_query($query);
if(!$sql) echo "ошибка при обращении к БД".mysql_error();
if(mysql_result($sql,0) > 0){
$_SESSION['login'] = $login;
$_SESSION['password'] = $password;
echo "Привет".$_SESSION['login'];
}
}
else {
echo "<form action=test.php method=post>
<input type='text' name='login' >
<input type='password' name='password' >
<input type='submit' value=Войти >
</form>" ;
}
?>
<a href="test2.php">СТРАНИЦА 2</a>
|
не хочет открываться сессия и запоминать логин с паролем? Вернее сессия открывается, но не авторизируется при помощи сессий. | |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 16:46)
| | Сами писали? | |
|
|
|
|
|
|
|
для: BinLaden
(14.02.2009 в 16:52)
| | По советам на протяжении всей статьи, но уверян тут ошибка на ошибке будет. | |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 16:54)
| | Возможно я не прав, но я так понимаю что сессия открывается, но так как у на стоит авторизация с post запроса, оно не хочет авторизироваться автоматически через открытую сессию…как это исправить? Это конечно мои мысли в слух :-) | |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 16:56)
| | перечитай ещё раз моё последнее сообщение | |
|
|
|
|
|
|
|
для: Slo_Nik
(14.02.2009 в 17:05)
| | Я прочитал твое последнее сообщение, и статью http://www.softtime.ru/bookphp/gl8_1.php она есть и в моей книге PHP5. По сессии не хочет авторизироваться даже на главной странице, где мы вводим логин и пароль. Что значит на каждой странице? Значит вставлять шапку:
session_start();
if (!$_SESSION['authorized']<>1) {
header("Location: /auth.php");
exit;
}
и на страницу авторизации? Пробовал, ничего положтельного не произошл. Не пиши пожалуйста таким же языком как и в статьях, я много просмотрел их в интернете и поэтому прошу помочь и показать мне готовый исправный код, а не отправлять меня опять на поиски в интернете на других сайтах, я там уже был и прошу здесь помощи. Это пустая трата времени и раздувание топика на форуме, мне легче научиться увидев готовый вариант, а не откладывать в голове кучу неверных. Вобщем у каждого свой метод обучения. | |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 17:20)
| | И мне ненужно чтобы человека отправляло автоматически на страницу авторизации, если он допустим просматривает странички на сайте, то не сможет перейти с главной страницы никуда пока не авторизируется. Я так это понимаю, а мне нужно чтобы он мог сделать это с любой страницы введя логин и пароль. | |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 17:23)
| | автоматом отправит на страницу авторизации только в том случае, если человек не авторизировался.
если всё пройдёт успешно, будет переходить между страницами без проблем | |
|
|
|
|
|
|
|
для: Slo_Nik
(14.02.2009 в 17:32)
| |
Автор: Slo_Nik (14.02.2009 в 17:32)
автоматом отправит на страницу авторизации только в том случае, если человек не авторизировался.
если всё пройдёт успешно, будет переходить между страницами без проблем
|
Правильно, но мне ненужно чтобы у человека так жестко требовало авторизацию, пускай смотри сколько хочт и с любой страницы когда захочет авторизируется. | |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 17:37)
| | можно на каждой странице сделать сноску на скрипт авторизации, при этом ограничить какие то действия посетителя сайта, например, он не может оставлять комментарии к статьям. вот захочет оставить, тогда пусть жмёт на "войти", авторизируется и оставляет комментарий.
это как вариант, а их много.
твой код рабочий, у меня работает.
При вводе логина и пароля на странице появляется "Привет login" или то имя что ты ввёл? | |
|
|
|
|
|
|
|
для: Slo_Nik
(14.02.2009 в 18:01)
| | Да, он работает в этом плане, но попробуй зайти на страницу еще раз (не обновить) а именно зайти, авторизация сбросится, хотя сессия жива. | |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 18:04)
| | Мне нужна весьма простая вещь, чтобы на всех страницах висела форма авторизации и на любой странице человек мог авторизироваться, мне ненужно чтобы человек оставлял коменты или что-то еще, чтобы просто при авторизации его привестствовало и появлялся линк по нажатию на который человек мог просмотреть свою инфу и отредавтировать ее, вот и все. | |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 18:04)
| | напиши
<?php
if(!$_SESSION['login']){
// тут впиши код, который у тебя есть
}
else{
echo "привет".$_SESSION['login'];
}
|
этим ты проверяешь существование сессии, и если она существует выводишь приветствие. | |
|
|
|
|
|
|
|
для: Slo_Nik
(14.02.2009 в 18:26)
| | Так сессия существует, я уже проверял выводя приветствие. Но авторизировать не хочет, при повторной загрузке страницы, хотя сессия и жива. | |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 18:37)
| | Выложи пожалуйста целиком свой вариант кода. | |
|
|
|
|
1.4 Кб |
|
|
для: home-studia
(14.02.2009 в 18:38)
| | вот тебе простое решение, но это только пример.
смотри, думай, читай статьи :)
здесь надо делать защиту скриптов, но это другая тема.
да и по поводу регистрации....
полностью надо переделать скрипт.
если ты так будешь проверять логин, то это ни чего тебе не даст.
опять же, ищи как проверить имя пользователя на уникальность при регистрации. | |
|
|
|
|
|
|
|
для: Slo_Nik
(14.02.2009 в 19:08)
| | Причем здесь регистрация и защита? :-) Мы даже с авторизацией так и не разобрались до конца. Вобщем тема открыта, кто может раставить все точки разместив код, буду очень признателен.
P.S. не заметил сразу приложенный файл, спасибо, сейчас посмотрю. | |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 19:15)
| | Попробовал твой вариант, если сессия уже открыта то все класно и все работает, но если сбросить сессию и попробовать вновь авторизироваться то выдает ошибку enter.php on line 21 это получается:
header("location:".$_SERVER['PHP_SELF']);
|
В чем может быть дело? | |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 19:27)
| | напиши полность что тебе выдаёт, а не окончание строки. | |
|
|
|
|
|
|
|
для: Slo_Nik
(14.02.2009 в 19:31)
| | Вот это:
Warning: Cannot modify header information - headers already sent by (output started at W:\home\site\www\test\test\connect.php:9) in W:\home\site\www\test\test\enter.php on line 21
|
| |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 19:34)
| | Попробовал на хостинге, все нормально прошло, по крайней мере ошибка не выскочила. Но почему-то приветствие появляется только после того как обновлю страничку, следовательно ошибка осталась, только на хостинге стоят менее чувствительные настройки на ошибки. | |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 19:34)
| | это говорит о том, что "на может модифицировать содержимое заголовка - заголовок уже послан в" и далее указывается где надо смотреть ошибку.
посмотри что у тебя на 9 строке в connect.php.
ты ни чего ни где не менял?
у меня такой ошибки нет. | |
|
|
|
|
|
|
|
для: Slo_Nik
(14.02.2009 в 19:59)
| | Нет, менял только путь до файла config. В этом ничего не трогал. Вот на что указывает ошибка:
9 <?php // вот на эту строку
10 include("enter.php");
11 ?>
|
| |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 20:02)
| | Но что может быть, почему приветствие появляется только после обновления страницы? | |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 20:04)
| | ну если честно, то я не могу въехать, почему у тебя выдаёт ошибку.
то что я тебе дал ты куда то вставил, или проверял как я тебе дал?
такую ошибку выдаёт, например, если есть вывод в браузер при помощи echo, хотя вариантов масса.
и не понятно, что за строку ты вставил, просто комментарий или какой то код? | |
|
|
|
|
|
|
|
для: Slo_Nik
(14.02.2009 в 20:53)
| | Я просто закинул твои файлы из архива и все, единственное у тебя был путь config/config.php я изменил на config.php | |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 20:02)
| | у Вас до 9-й строки в файле куча текста.
Весь этот текст уже ушел в поток браузера. Так что отправлять любые поля заголовка уже поздно.
Поэтому никакие header(), session_start(), setcookie() работать не будут. | |
|
|
|
|
|
|
|
для: Trianon
(14.02.2009 в 21:03)
| | Как вы предалаете изменить? И они ведь вроде как работают, просто применяются почему-то только после обновления странички. | |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 21:14)
| | Я? Никак не предлагаю.
Я вообще написал это больше для Вашего оппонента, мужеством которого искренне восхищаюсь :) | |
|
|
|
|
|
|
|
для: Trianon
(14.02.2009 в 21:03)
| | ну в принципе я тоже самое сказал, но у меня такой код работает и ни каких ошибок.
это если один к одному скопирован.
могут ли повлиять настройки php.ini на вывод заголовков? | |
|
|
|
|
|
|
|
для: Slo_Nik
(14.02.2009 в 21:20)
| | если включена буферизация выходного потока (и буфер не переполнен) - заголовки будут проходить и после вывода.
output_buffering в php.ini (или аналогичная инструкция .htaccess )
Но писать код в расчете на это - фе. | |
|
|
|
|
|
|
|
для: Trianon
(14.02.2009 в 21:29)
| | Но проблема ведь так и не решена. Приветствие выводится только после повторного обновления, что нужно изменить чтобы это исправить? | |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 21:36)
| | исправить то что ты скопировал, я так догадываюсь, что в этом проблема.
как ты делал? ты распаковал мой архив и запустил скрипты или вставил в свои скрипты?
когда я тебе писал пример, такая трабла была, не помню как это исправил. надо видеть то, что ты сделал с примером. | |
|
|
|
|
|
|
|
для: Slo_Nik
(14.02.2009 в 22:15)
| | Я только распокавал твой архив, как и писал выше, никакие скрипты я больше не вставлял. | |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 22:34)
| | в таком случае всё должно работать. | |
|
|
|
|
|
|
|
для: Slo_Nik
(14.02.2009 в 22:39)
| | Оно и работает, но приветствие появляется только после обновления странички (1. авторизируешься - поля ввода логина и пароля исчезают, 2 нужно обновить страничку, чтобы по проиветствовало по имени) | |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 22:42)
| | не могу понять. проверяй всё по строчно, все инклюды, все переходы, передачи сессий , имена файлов и т.п.
что то ты не так скопировал.
чудес же не бывает. | |
|
|
|
|
|
|
|
для: Slo_Nik
(14.02.2009 в 23:07)
| | Смотрим:
connect.php
<?php session_start();?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Untitled Document</title>
</head>
<body>
<?php
include("enter.php");
?>
<h1>Это первая страница</h1>
<br />
<a href='connect2.php'>перейти</a>
</body>
</html>
|
connect2.php
<?php session_start(); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Untitled Document</title>
</head>
<body>
<?php
include("enter.php");
?>
<h1>Это вторая страница</h1>
<br />
<a href='connect.php'>перейти</a>
</body>
</html>
|
enter.php
<?php
include_once("config.php");
if(!$_SESSION['login']){
if(!empty($_POST['login']) && !empty($_POST['password'])){
if(isset($_POST['login']))$login = $_POST['login'];
if(isset($_POST['password']))$password = $_POST['password'];
$query = "SELECT `id`, `login`, `password`, `email`
FROM `users`
WHERE `login` ='$login' AND `password`='$password'
LIMIT 1";
$sql = mysql_query($query);
if(!$sql) echo "ошибка при обращении к БД".mysql_error();
if(mysql_result($sql,0) > 0){
$_SESSION['login'] = $login;
$_SESSION['password'] = $password;
header("location:".$_SERVER['PHP_SELF']);
}
else echo "такого пользователя нет!!!";
}
else {
echo "<form method=post>
<input type='text' name='login' >
<input type='password' name='password' >
<input type='submit' value=Войти >
</form>" ;
}
}
else {
echo "Привет <b>".$_SESSION['login']."</b><br> Твой пароль -".$_SESSION['password'];
}
?>
|
| |
|
|
|
|
|
|
|
для: Slo_Nik
(14.02.2009 в 23:07)
| | так а какие чудеса?
header() вызывается из enter.php
enter.php подключается уже после того как <!DOCTYPE ....<body> ушло в поток.
Всё закономерно. header() выполнен не будет. | |
|
|
|
|
|
|
|
для: Trianon
(14.02.2009 в 23:23)
| | ну у меня же выполняется :)
а если применить ob_start();? | |
|
|
|
|
|
|
|
для: Slo_Nik
(14.02.2009 в 23:32)
| | Блин! У Вас включен буфер на 4Кб
Выключите - увидите то же самое. | |
|
|
|
|
|
|
|
для: Trianon
(14.02.2009 в 23:38)
| | ну выключил, попробовал с ob_start(); ошибка ушла, всё работает :) | |
|
|
|
|
|
|
|
для: Slo_Nik
(14.02.2009 в 23:48)
| | я вообще-то не про это. | |
|
|
|
|
|
|
|
для: Trianon
(14.02.2009 в 23:53)
| | тогда про что? | |
|
|
|
|
|
|
|
для: Slo_Nik
(14.02.2009 в 23:56)
| | про то что Вы пишете "ищи ошибку у себя" в то время как она у Вас. | |
|
|
|
|
|
|
|
для: Trianon
(15.02.2009 в 00:12)
| | ну если бы знать всё нюансы... | |
|
|
|
|
|
|
|
для: Trianon
(14.02.2009 в 23:53)
| | можно переделась скрипт, что бы не заморачиваться по поводу header, а толку? | |
|
|
|
|
|
|
|
для: Slo_Nik
(15.02.2009 в 00:00)
| | Так кто-нибудь может подсказать решение? :-) | |
|
|
|
|
|
|
|
для: home-studia
(15.02.2009 в 00:04)
| | включи на локальном output_buffering, проверь,работает или нет?
можешь после session_start() вписать ob_start(); всё должно работать.
разница была в том, что у меня эта настройка была включена по умолчанию.
выключил, появилась твоя ошибка, применил ob_start() всё заработало :) | |
|
|
|
|
|
|
|
для: Trianon
(14.02.2009 в 21:29)
| | я не собираюсь писать код в расчёте на это.
я проверял скрипты на локальном, ставил apache сам, может надо что то поменять в php.ini. я пока не вдаюсь в тонкости конфигурирования, полагаюсь на умолчаниt, поэтому с спросил.
вот такое значение output_bufferin 4096 у меня в php.ini. | |
|
|
|
|
|
|
|
для: Slo_Nik
(14.02.2009 в 22:11)
| | Это значит что до 4 килобайт в поток можно выкинуть до того, как этот поток уйдет в сеть к браузеру. | |
|
|
|
|
|
|
|
для: Trianon
(14.02.2009 в 22:17)
| | ну это понятно. при реальных условиях используют такое же значение?
я не могу понять почему у home-studiа не работает, на своём компе проверил несколько раз, всё работает нормально, приветствие выводится сразу после ввода логин/пароль и при переходе на другую страницу данные сохраняются? | |
|
|
|
|
|
|
|
для: Slo_Nik
(14.02.2009 в 22:46)
| | ну может у него output_buffering 0 стоит ?
При реальных условиях буферизацию не включают . | |
|
|
|
|
|
|
|
для: Trianon
(14.02.2009 в 22:49)
| | На локальном:
(выбрасывало ошибку)
На хостинге ошибку не выбрасывает, но происходит вот такое торможение. | |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 23:00)
| | ну давай сначала.
показывай как на хостинг выложил, но только с реальными путями и не с пустыми строками обращения к БД,
пойми, по этим данным тебя не кто ломать не будет, а если будут, то воспользуются другими способами :) | |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 23:00)
| | значит включай её и проверяй. всё работает. я у себя выключил, выдало твою ошибку | |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 19:15)
| | по регистрации.
если ты так будешь проверять логин, существует ли такой уже или нет, тебе ни чего не даст, делается это по другому.
по поводу защиты.
я тебе писал, что надо заставить скрипт работать, а потом доводить его до ума.
я имел ввиду, что данные которые ты передаёшь скрипту авторизации надо обрабатывать специальными функциями.
ты не указал имя базы данных и т.д., сославшись на то, что этим ты ограждаешь свой будующий сайт от возможных неприятностей.
но если ты не доработаешь скрипт авторизации, то взломать твой сайт будет элементарно :)
через форму ввода пароль/логин можно будет передать вредоносный код. и не только через неё. | |
|
|
|
|
|
|
|
для: home-studia
(14.02.2009 в 17:20)
| | первое.
обрати внимание какими тегами ты обрамляешь session_start()
ты применяешь краткий вариант php-тегов, они работают только в том случае, если в конфигурационном файле php.ini директива short_open_tag включена, т.е имеет значение on. в противном случае может возникнуть проблемы в интерпретации.
возможно, что у тебя в настройках самого php выщеуказаная директива выключена и может поэтому возникает проблемка.
используй полный вариант php-тегов.
второе.
если ты вставишь такой код на каждой странице, то ни чего не произойдёт, так как там прописаны не твои переменные и страницы.
или ты опять конспирируешься :)?
третье.
код вполне рабочий, только его надо доводить до ума.
p.s. подправил ошибочку, запарился немного когда писал сообщение | |
|
|
|
|
|
|
|
для: Slo_Nik
(14.02.2009 в 17:30)
| | Проверил , какие еще варианты? :-) Не авторизируется по этому коду даже на той странице где вводим логи и пароль. | |
|
|
|
|
1.5 Кб |
|
|
для: home-studia
(14.02.2009 в 17:36)
| | вот ещё один вариант.
если всё будет нормально работать, то после авторизации будет совершён переход на "главную", в данном случае это файл connect.php.
дальше можно будет переходить без запроса пароля/логина, а авторизоваться можно с любой страницы.
если хочешь, что бы переход после авторизации совершался на ту страницу, с которой ты перешёл для авторизации, то пусть будет твоим домашним заданием :) | |
|
|
|
|
|
|
|
для: Slo_Nik
(15.02.2009 в 00:57)
| | Спасибо, хороший пример, воспользовался им как основой :-) Хотелось бы вернуться к вопросу вывода e-mail. Оказывается даже если создать еще одну графу, например “test”, занести в нее любую информацию и попытаться вывести, то ничего не происходит. | |
|
|
|
|
|
|
|
для: home-studia
(15.02.2009 в 04:57)
| | да всё так же как и логин/пароль, занести в сессию.присвоить $_SESSION['email'] значение поля "email" из БД.
только одна заморочка тут,надо поменять функцию, которая возвращает результат запроса.
mysql_result возвращает значение одной ячейки. для вывода тебе надо использовать функцию которая возвращает значение нескольких ячеек сразу, например mysql_fetch_array.работают они быстрее чем используемая тобой функция.
В этом случае тебе надо будет немного переписать файл enter.php. поройся в мануале, почитай как сделать.
ну а если оставить mysql_result, то тебе надо будет указать из какого поля надо получить значение, опять же всё можешь посмотреть в мануале.
примерно так
<?php $_SESSION['email'] = mysql_result($sql,0,"email");
|
и по примеру вывода логина/пароля в окно браузера, дописать в соответствующей строке. | |
|
|
|
|
|
|
|
для: home-studia
(11.02.2009 в 18:44)
| | Тема слишком длинная, если решить проблему в рамках данной темы не удалось, следует завести новую тему, со ссылкой на эту. | |
|
|
|