Forum Webscript.Ru

Программирование => PHP => Тема начата: Михаил от 24 Июля 2002, 16:11:33

Название: Аутенфикации и приветствие
Отправлено: Михаил от 24 Июля 2002, 16:11:33
Здравствуйте, люди добрые.. Помогите пожалуйста.. А вопрос следующий..:
У меня есть таблица в MySql с полями имя, фамилия, username, password. И есть страница аутенфикации пользователей. Там они вводят свой username и password. Если записи введенные ими совпадают с записями из базы, то происходит аутенфикация и они попадают на другую страницу. Но вопрос, собственно говоря, в другом: Как на странице, куда они попадают написать приветствие типа Здравствуйте, $имя $фамилия. У меня только получалось Здравствуйте, $username, но это не очень красиво...! (Помойму надо написать еще один запрос типа $sql2... или как?).
Спасибо...!:confused:
Название: Аутенфикации и приветствие
Отправлено: ThE0ReTiC от 24 Июля 2002, 16:20:09
Дергай их имена из базы и пиши.
Название: Аутенфикации и приветствие
Отправлено: GotZfild от 24 Июля 2002, 17:10:49
Состряпай запрос типа

$query = "SELECT COUNT(*) AS num, CONCAT(name, surname) as full_name FROM WHERE username = \'$username\' AND password = \'$password\' GROUP BY full_name LIMIT 2;

Потом проверь, чтобы num был равен 1, ну, дальше, я думаю, разберешься.
Название: Аутенфикации и приветствие
Отправлено: Михаил от 24 Июля 2002, 21:35:18
АААА. А можно немного поточнее и желательно побольше комментариев... Если не сложно конечно...
Спасибо!
Название: Аутенфикации и приветствие
Отправлено: GotZfild от 24 Июля 2002, 21:48:30
COUNT - считает количество выбранных записей. Если оно не равно 1, то значит дело не чисто - выдаешь ошибку.
CONCAT - производит конкатенацию значений полей. Там, конечно, следовало бы написать CONCAT(name, \' \', surname), полученное значение сохраняем в full_name, к которой ты можешь обратиться в скрипте.
Дальше, я думаю, понятно.
Да, LIMIT можно не использовать, но выбирать больше двух записей просто не имеет смысла.
Название: Аутенфикации и приветствие
Отправлено: Меняздесьдавнонет от 24 Июля 2002, 22:28:07
GotZfild
Ну зачем ты человеку такие сложности пишешь?
Он в ногах своих путается, а ты его бегать заставляешь.

МИША!!!
Я тебе давал ссылки на сайты для новичков.
Посмотри там примеры для работы с базами данных!
Это же азы - извлечение данных из базы! Запрос имени и фамилии!
собственно, запрос-то тебе новый писать не надо.
Надо просто среди запрашиваемых полей, написать и фамилию.
пароль и имя сравнить, имяи фамилию - вывести.
Какие тут тебе еще комментарии нужны?
Название: Аутенфикации и приветствие
Отправлено: Михаил от 25 Июля 2002, 10:56:04
RomikChef ,
Спасибо за ссылки... Обязательно посмотрю
Название: Аутенфикации и приветствие
Отправлено: GotZfild от 25 Июля 2002, 12:46:00
RomikChef
Хотел как лучше... И объяснил вроде внятно.
Название: Аутенфикации и приветствие
Отправлено: Михаил от 26 Июля 2002, 15:16:55
Ну почитал я эти ссылки, а толкового почти неичего нету.?
А вопрос-то остался....
Причем ответ нужен срочно..... Что же делать???
Название: Аутенфикации и приветствие
Отправлено: Меняздесьдавнонет от 26 Июля 2002, 15:21:11
Ну давай разбираться.
Как ты получаешь username на новой странице?
Название: Аутенфикации и приветствие
Отправлено: Михаил от 27 Июля 2002, 10:04:38
RomikChef  

Ну вообщем дело такое: Есть таблица с полями id, username, password, l_name, name

Есть запрос
$sql = "SELECT * FROM $table_name
   WHERE username = "$username" AND password = password("$password")
";


А затем уже в самом тексте (все еще продолжается скрипт): Здравствуйте, $username
А надо чтобы было что -то типа: Здравствуйте l_name, name
Название: Аутенфикации и приветствие
Отправлено: Меняздесьдавнонет от 27 Июля 2002, 11:05:44
Зачем тебе второй sql запрос, если ты УЖЕ запрашиваешь все поля, в том числе и имя и фамилию.

Зачем ты врешь, что прочитал все сайты?
Вот, здесь как раз объясняется, как выводить данные из MySQL
http://www.myphp.dem.ru/lessons/index.php?16
прочти и выведи свои долгожданные имя и фамилию.
Название: Аутенфикации и приветствие
Отправлено: Михаил от 28 Июля 2002, 13:36:11
RomikChef  

Пытался сделать вот так:

$sql = "SELECT l_name, name, username, password FROM $table_name
WHERE username = "$username" AND password = password("$password")
";



Здравствуйте, l_name, name  ----- Но не получилось.....

На ссылке в 16 уроке, еще была такая запись:

$result = mysql_query("SELECT l_name, name FROM $table_name", $link);
$first_row = mysql_fetch_array($result);
echo "Первая запись:
".$l_name[\'l_name\']." - ".$name[\'name\']."
";

Здравствуйте $l_name, name
Тоже вроде пытался... Запрос ($sql) оставил таким же, а остальное поменял. Но не получилось.....
Похоже мне не дано знать php........ :-(
Название: Аутенфикации и приветствие
Отправлено: Maniac от 28 Июля 2002, 14:22:26
Цитировать
Похоже мне не дано знать php

Не бойся, друг, еще не все потеряно :)
В приведенном тобой примере фишка в том, что ты получаешь значения выборки функцией mysql_fetch_row. Дык вот, она тебе возвращает ОБЫКНОВЕННЫЙ массив. А в печати ты обращаешься к ней как к АССОЦИАТИВНОМУ.
Так что либо обращайся по цифровому индексу (0,1,...), либо испольуй mysql_fetch_assoc()
Название: Аутенфикации и приветствие
Отправлено: Меняздесьдавнонет от 28 Июля 2002, 14:29:02
Как-то ты путанно рассказываешь. приводишь скрипты, но непонятно, чьи они.
приведи весь свой скрипт, точнее не весь, а все строкие между
$sql = "SELECT
и
Здравствуйте $l_name, name
Название: Аутенфикации и приветствие
Отправлено: ThE0ReTiC от 28 Июля 2002, 15:18:19
Maniac
mysql_fetch_array  приотсутствии второго, необязательного параметра выдает массив и как нумерованный (если так можно сказать, так как любой массив нумерованный) и как ассоциативный:
Подробности:
Цитировать

The optional second argument result_type in mysql_fetch_array() is a constant and can take the following values: MYSQL_ASSOC, MYSQL_NUM, and MYSQL_BOTH. This feature was added in PHP 3.0.7. MYSQL_BOTH is the default for this argument.

Так что использовать mysql_fetch_assoc необязательно, хотя думаю работает mysql_fetch_assoc побыстрее.
Не проверял, так что за быстодействие не поручусь. :)
Название: Аутенфикации и приветствие
Отправлено: Меняздесьдавнонет от 28 Июля 2002, 15:27:58
Не, они же в мануале пишут, что роу всех быстрее, а у всех остальных различие пренебрежимо мало. Да кажется, в этом форуме как раз флейм и был, про скорость этих функций. или не в этом, а на ихбт... Путаюсь я в них :-)))
Название: Аутенфикации и приветствие
Отправлено: Михаил от 29 Июля 2002, 12:22:55
RomikChef  

Вот отрывот из моего скрипта... А сообщением выше я описывал как я пытался сделать исходя из примеров, описанных в той ссылке, которую ты мне прислал....

if ((!$username) || (!$password)) {
   header("Location:  http://localhost/ind/go.htm");
   exit;
}

$db_name = "pol";
$table_name = "pol";

$connection = @mysql_connect("localhost")
   or die("Couldn\'t connect.");

$db = mysql_select_db($db_name, $connection)
   or die("Couldn\'t select database.");

$sql = "SELECT * FROM $table_name
   WHERE username = \\"$username\\" AND password = password(\\"$password\\")
   ";

$result = mysql_query($sql)
        or die ("Can\'t execute query.");

$num = mysql_numrows($result);

if ($num != 0) {

$cookie_name = "go";
   $cookie_value = "ok";
   $cookie_expire = "";
   $cookie_domain = "";
   
   setcookie($cookie_name, $cookie_value, $cookie_expire, "/" , $cookie_domain, 0);

$today= date ("d.m.Y, H:i");
$display_block = "



Информация






 
   
........
......
......
?>
Название: Аутенфикации и приветствие
Отправлено: Меняздесьдавнонет от 29 Июля 2002, 12:30:19
после
$result = mysql_query($sql)
or die ("Can\'t execute query.");

надо написать
$row=mysql_fetch_array($result);
$name=$row[\'name\'];
$l_name=$row[\'l_name\'];

Дальше сам справишься, бедняга?
Название: Аутенфикации и приветствие
Отправлено: Михаил от 31 Июля 2002, 13:02:55
RomikChef
Слушай есть предложение. Если хочешь можешь связаться : beefitor@mail.ru



     

Здравствуйте,  $username