Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Отображение конкретного e-mail или логина


Автор: Cript777 18.11.2012, 05:21
Приветствую! Вот есть простой скрипт выполняющий авторизацию\регистрацию с помощью mysql. 

форма входа  \ форма регистрации

Код

<table>
<form action="avt.php" method="POST">
<tr>
<td>Имя</td>
<td><input type="text" name="login"></td>
</tr>

<tr>
<td colspan="2"> <input type="submit" value="OK" name="submit"></td>
</tr>
</form>
</table>





<table>
<form action="reg.php" method="POST">
<tr>
<td>Имя</td>
<td><input type="text" name="login" ></td>
</tr>

<tr>
<td>Email</td>
<td><input type="text" name="email"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="OK" name="submit" ></td>
</tr>

</form>
</table>


авторизация 

Код

<?php
include_once("connect.php");
if(isset($_POST['submit']))
{
$login = $_POST['login'];
$login=mysql_real_escape_string($login);
$query = "SELECT id, login
FROM users
WHERE login ='{$login}'
LIMIT 1";
$sql = mysql_query($query) or die(mysql_error());
if (mysql_num_rows($sql) == 1)
echo 'Успешный вход .$login. ';
else 
echo 'Неверно введен логин';
}

?>


регистрация 

Код

<?
include_once("connect.php");
if (isset($_POST['submit']))
{
if(empty($_POST['login']))
{
echo 'Вы не ввели логин';
}

else
{
$login = $_POST['login'];
$email = $_POST['email'];
$query = "SELECT `id`
FROM `users`
WHERE `login`='{$login}'
";
$sql = mysql_query($query) or die(mysql_error());
if (mysql_num_rows($sql) > 0)
{
echo 'Такой логин уже существует';
}

else 
{
$login=mysql_real_escape_string($login);
$email=mysql_real_escape_string($email);
$query = "INSERT INTO users(login , email )
VALUES ('$login', '$email')";
$result = mysql_query($query) or die(mysql_error());;
echo 'Регистрация успешно прошла';
}
}
}
?>


sql запрос

Код

CREATE TABLE `users` (
`id` INT( 255 ) NOT NULL AUTO_INCREMENT ,
`login` VARCHAR( 255 ) NOT NULL ,
`email` VARCHAR( 255 ) NOT NULL ,
PRIMARY KEY ( `id` )
);


Вопрос такой. В файле авторизации есть такой момент 'Успешный вход .$login. ';  ни как не получается чтобы вместо .$login. отображался логин пользователя и имайл ('$email')  smile 

Автор: Sanchezzz 18.11.2012, 08:12
Если я правильно вас понял вы хотите войти через авторизацию не только login  но и через email верно? 
Тогда sql должен быть с условием Или
Код

$sql = "SELECT id, login,email
FROM users
WHERE login ='{$login}' OR email='{$login}' 
LIMIT 1";


Автор: Guedda 18.11.2012, 08:13
Вместо одинарных ковычек используйте двойные, или, если одинарные Вам ооочень хочется, то пишите так:
Код

'Успешный вход ' . $login

так как одинарные кавычки не обрабатывают переменную как переменную.

Добавлено через 1 минуту и 29 секунд
Цитата(Sanchezzz @  18.11.2012,  09:12 Найти цитируемый пост)
Если я правильно вас понял вы хотите войти через авторизацию не только login  но и через email верно? 

Нет. Судя по всему, у него е-мейл - это типа пароля smile

Автор: Sanchezzz 18.11.2012, 11:16
Цитата

Нет. Судя по всему, у него е-мейл - это типа пароля  
  smile 

Автор: Cript777 18.11.2012, 17:12
Цитата(Guedda @ 18.11.2012,  08:13)
Вместо одинарных ковычек используйте двойные, или, если одинарные Вам ооочень хочется, то пишите так:
Код

'Успешный вход ' . $login

так как одинарные кавычки не обрабатывают переменную как переменную.


Нет. Судя по всему, у него е-мейл - это типа пароля smile

С логином сработало, очень выручили! 
Пароль здесь не нужен, а имайл как необязательный параметр..  вот с   . $email  не получилось - не отображает.. что не так?

Автор: Guedda 18.11.2012, 18:06
Цитата(Cript777 @  18.11.2012,  18:12 Найти цитируемый пост)
вот с   . $email  не получилось - не отображает.. что не так? 

Постараюсь побыть волшебником, и поугадывать Ваши мысли: не получилось в скрипте авторизации? Так и не получится, потому что Вы переменную $email нигде не инициализируете.

Автор: Sanchezzz 18.11.2012, 18:38
телепаты в отпуске  smile 

Автор: Cript777 18.11.2012, 18:59
Цитата(Guedda @ 18.11.2012,  18:06)
Цитата(Cript777 @  18.11.2012,  18:12 Найти цитируемый пост)
вот с   . $email  не получилось - не отображает.. что не так? 

Постараюсь побыть волшебником, и поугадывать Ваши мысли: не получилось в скрипте авторизации? Так и не получится, потому что Вы переменную $email нигде не инициализируете.

Был бы очень признателен если поточнее...  Если в моменте WHERE login ='{$login}' добавить OR email='{$login}' то после входа имайл отображается но под видом логина, хотелось бы чтобы правильно было...

Автор: Guedda 18.11.2012, 19:39
Ну тогда вместо 
Код

$login = $_POST['login'];

напиши
Код

$login = $email = $_POST['login'];

И потом вставляй $email;

Автор: Cript777 18.11.2012, 21:06
Цитата(Guedda @ 18.11.2012,  19:39)
Ну тогда вместо 
Код

$login = $_POST['login'];

напиши
Код

$login = $email = $_POST['login'];

И потом вставляй $email;

В этом случае он выводит login вместо email, а нужно чтобы определял именно email из бд (всего 3 строки id, login, email) .

Автор: Guedda 18.11.2012, 21:24
В выборке sql-запроса еще добавьте поле email и потом немного усложните конструкцию:
Код

<?php
include_once("connect.php");
if(isset($_POST['submit']))
{
    $login = $_POST['login'];
    $login=mysql_real_escape_string($login);
    $query = "SELECT id, login, email
    FROM users
    WHERE login ='{$login}'
    LIMIT 1";
    $sql = mysql_query($query) or die(mysql_error());
    if (mysql_num_rows($sql) == 1) {
        $row = mysql_fetch_array($sql);
        $email = isset($row['email']) ? $row['email'] : "";
        echo 'Успешный вход ' . $email;
    } else { echo 'Неверно введен логин'; }
}
?>

Автор: Cript777 18.11.2012, 21:44
Цитата(Guedda @ 18.11.2012,  21:24)
В выборке sql-запроса еще добавьте поле email и потом немного усложните конструкцию:
Код

<?php
include_once("connect.php");
if(isset($_POST['submit']))
{
    $login = $_POST['login'];
    $login=mysql_real_escape_string($login);
    $query = "SELECT id, login, email
    FROM users
    WHERE login ='{$login}'
    LIMIT 1";
    $sql = mysql_query($query) or die(mysql_error());
    if (mysql_num_rows($sql) == 1) {
        $row = mysql_fetch_array($sql);
        $email = isset($row['email']) ? $row['email'] : "";
        echo 'Успешный вход ' . $email;
    } else { echo 'Неверно введен логин'; }
}
?>

 smile То что нужно, и в правду волшебство!  smile 

Автор: Aliance 19.11.2012, 10:19
Зачем при регистрации делать лишний запрос к БД? Не проше ли поставить уникальный индекс на поля и проверять по коду ошибки.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)