Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Программирование > PHP

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 03.04.2004, 22:49
Usnul вне форума Посмотреть профиль Отправить личное сообщение для Usnul Посетить домашнюю страницу Usnul Найти все сообщения от Usnul
  № 1  
Usnul
 
Аватар для Usnul

Регистрация: Mar 2001
Адрес: во сне
Сообщений: 2,701
Отправить сообщение для Usnul с помощью ICQ
По умолчанию php and MySQL (login form)

Привет, я ламер в том и другом, но все же пытаюсь что-то делать, и вышеупомянутая деталь сильно осложняет создание чего либо на этих языках (или частично даже системах?). Короче, я взятся делать форум на флэше, но ведь на одном флэше далеко не уедешь, пришлось изучать пхп. Пхп частично подучил и понял что текстовики - это не лучшее решение для хранения инфы, и уж точно не самое удобное и быстродействинное с точки зрения навигации. Базы данных - логично, MySQL - как самая доступная и ,вроде бы, поддерживается большенством хостеров.
ну и вот, MySQL вроде как освоил худо-бедно, пхп тоже, но как доходит до скрещивания, вот тут-то и появляются проблемы. А еще точнее, я делаю форму ВХОДА в систему, и никак не могу заставить работать вот эти строчки:

Код:
$id=mysql_query("SELECT id FROM users WHERE name = '$login'");
$logging=mysql_query("SELECT pass FROM users WHERE name = '$login'");
в этом коде:

Код:
<?php
   $login = $_REQUEST["login"];
   $pass = $_REQUEST["pass"];
   $mysqllocation="localhost";	#host name
   $mysqllogin="usnul";		#your MySQL user name
   $mysqlpass="none";	#your MySQL password
   $mysqldbname="forum";	#name of the forum database
   $mysqltablename="users"; 	#name of the table with users' data
   $link = mysql_connect($mysqllocation, $mysqllogin, $mysqlpass);
   if($link){
   	   mysql_select_db($mysqldbname);
   	   if(mysql_select_db($mysqldbname)){ 
		   if(!empty($login) AND !empty($pass)){
		   	$id=mysql_query("SELECT id FROM users WHERE name = '$login'");
		   	$logging=mysql_query("SELECT pass FROM users WHERE name = '$login'"); 
		   	if($logging){ 
		   		if(mysql_result($logging)==$pass){
		   			echo "&message=Password is correct&description=".$id."&";
		   		}
		   		else{
		   			echo "&message=Incorrect passwords&description=".mysql_result($logging)."&";
		   			#echo "&message=Incorrect password&description=".$id."&";
		   			die();
		   		}
		   	}
		   	else{
		   		#echo "&message=Could not check the password&description=Check MySQL log file for more info&";
		   		echo "&message=Could not check the password&description=".mysql_error()."&";
		   		die();
		   	}
		   }
		   else{
		   	if(empty($login) AND empty($pass)){
		   		echo "&message=No login and password values&";
		   		die();
		   	}elseif(empty($login)){
		   		echo "&message=No login value&";
		   		die();
		   	}else{
		   		echo "&message=No password value&";
		   		die();
		   	}
		   }
	}
	else{
	echo "&message=Could not select the database&description=".mysql_error()."&";
	die();
	}
   }   
   else{
   	echo "&message=Could not connect to MySQL&description=".mysql_error()."&";
       	die();
   }
   mysql_free_result($result);
   mysql_close($link);
?>
отчаянно прошу помощи.
__________________
I'm only happy when it rains.
Waka Laka


Последний раз редактировалось Usnul; 03.04.2004 в 22:51.
Старый 04.04.2004, 00:43
s_u_m_p вне форума Посмотреть профиль Отправить личное сообщение для s_u_m_p Посетить домашнюю страницу s_u_m_p Найти все сообщения от s_u_m_p
  № 2  
s_u_m_p

Регистрация: Mar 2004
Адрес: Областной центр "sump"
Сообщений: 202
Отправить сообщение для s_u_m_p с помощью ICQ
Код:
$id=mysql_query("SELECT id FROM users WHERE name = '$login'");
попробуй тоже самое только без одинарных кавычек, просто
WHERE name=$login

только побыстрей пока CRAZY не объявился...
__________________
:::::::::::: sump ::::::::::::

Старый 04.04.2004, 02:12
Usnul вне форума Посмотреть профиль Отправить личное сообщение для Usnul Посетить домашнюю страницу Usnul Найти все сообщения от Usnul
  № 3  
Usnul
 
Аватар для Usnul

Регистрация: Mar 2001
Адрес: во сне
Сообщений: 2,701
Отправить сообщение для Usnul с помощью ICQ
к сожалению это не работает
__________________
I'm only happy when it rains.
Waka Laka

Старый 04.04.2004, 02:48
Usnul вне форума Посмотреть профиль Отправить личное сообщение для Usnul Посетить домашнюю страницу Usnul Найти все сообщения от Usnul
  № 4  
Usnul
 
Аватар для Usnul

Регистрация: Mar 2001
Адрес: во сне
Сообщений: 2,701
Отправить сообщение для Usnul с помощью ICQ
Код:
		   	$query=mysql_query("SELECT * FROM `users` LIMIT 0,1");
			$D=mysql_fetch_array($query, MYSQL_ASSOC);
			echo $D['name'];
вот этот код не пойдет на замену, так как он не возврашает пароля от указанной учетной записи, а просто возвращает значение какой-либо колонки в первой (в данном случае) строчке, что не есть суть задуманного. А суть такова, что при посылке в базу имени пользователя, база должна была бы вернуть пароль, пароль был бы в последствии сравнен с тем что ввел пользователь, и если пароль совпадает, узер бы логинился.
__________________
I'm only happy when it rains.
Waka Laka

Старый 04.04.2004, 03:07
Usnul вне форума Посмотреть профиль Отправить личное сообщение для Usnul Посетить домашнюю страницу Usnul Найти все сообщения от Usnul
  № 5  
Usnul
 
Аватар для Usnul

Регистрация: Mar 2001
Адрес: во сне
Сообщений: 2,701
Отправить сообщение для Usnul с помощью ICQ
цитаты из учебника по MySQL (доступного для скачивания на сайте www.mysql.com) гласит:
----------------------------------------------
3.3.4.2 Выборка определенных строк

Из таблицы можно выбрать и только нужные строки. Например, если вы хотите проверить правильность внесенных в дату рождения собаки Bowser изменений, соответствующую запись можно получить следующим способом:

mysql> SELECT * FROM pet WHERE name = "Bowser";
Код:
+--------+-------+---------+------+------------+------------+
| name   | owner | species | sex  | birth      | death      |
+--------+-------+---------+------+------------+------------+
| Bowser | Diane | dog     | m    | 1989-08-31 | 1995-07-29 |
+--------+-------+---------+------+------------+------------+
---------------------------------------------
эта часть мануала говорит что чтобы получить значения всех колоник в какой-то строчке, то нужно нфписать что-то вроде:
mysql> SELECT * FROM sometable WHERE y = "x";
где y - это название координирующего столбца, а x, соответственно, значение элемента в координирующем столбце. После введения данной строчки MySQL выведет значения всех елементов строчки в которой находится указанная ячейка.
следующия цитата учит:
---------------------------------------------
3.3.4.3 Выборка определенных столбцов

Если строки целиком вам не нужны, достаточно просто перечислить имена нужных столбцов, разделив их запятыми. Например, если вы хотите узнать, когда родились животные, выберите столбцы с именами и датами рождения:

mysql> SELECT name, birth FROM pet;
Код:
+----------+------------+
| name     | birth      |
+----------+------------+
| Fluffy   | 1993-02-04 |
| Claws    | 1994-03-17 |
| Buffy    | 1989-05-13 |
| Fang     | 1990-08-27 |
| Bowser   | 1989-08-31 |
| Chirpy   | 1998-09-11 |
| Whistler | 1997-12-09 |
| Slim     | 1996-04-29 |
| Puffball | 1999-03-30 |
+----------+------------+
------------------------------------------------
эта часть говорит - если введешь
mysql> SELECT x FROM sometable;
то получишь значения всех этементов столбца x из таблици sometable.

то есть

mysql> SELECT n FROM sometable WHERE y = "x";
должно нам вернуть значение одной единственной ячейки, так?!


простите если что запутанно, голова толком не варит.
__________________
I'm only happy when it rains.
Waka Laka


Последний раз редактировалось Usnul; 04.04.2004 в 03:10.
Старый 04.04.2004, 12:20
kostyanK вне форума Посмотреть профиль Отправить личное сообщение для kostyanK Посетить домашнюю страницу kostyanK Найти все сообщения от kostyanK
  № 6  
kostyanK

Регистрация: Dec 2003
Сообщений: 36
попробуй так:
Код:
$result = mysql_query("SELECT id, pass FROM users WHERE name = '$login'",$link);
$myrow = mysql_fetch_row($result)
$id=$myrow[0];
$logging=$myrow[1];
P.S. Не обязательно 2 раза выбирать базу
Цитата:
mysql_select_db($mysqldbname);
if(mysql_select_db($mysqldbname)){

Старый 04.04.2004, 12:32
s_u_m_p вне форума Посмотреть профиль Отправить личное сообщение для s_u_m_p Посетить домашнюю страницу s_u_m_p Найти все сообщения от s_u_m_p
  № 7  
s_u_m_p

Регистрация: Mar 2004
Адрес: Областной центр "sump"
Сообщений: 202
Отправить сообщение для s_u_m_p с помощью ICQ
должно пройти потому что это правильно:

$query = "SELECT id FROM user WHERE name="\"".$login."\"";
$id = mysql_query($query) or die ("query failed");

\" символ двойной кавычки
__________________
:::::::::::: sump ::::::::::::

Старый 04.04.2004, 12:47
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 8  
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: Dec 2001
Сообщений: 4,159
Цитата:
Оригинал написал(а) s_u_m_p
попробуй тоже самое только без одинарных кавычек, просто
WHERE name=$login

только побыстрей пока CRAZY не объявился...
"Товарищу полковнику ваша шутка очень понравилась" (c)
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++

Старый 04.04.2004, 15:56
Самурай вне форума Посмотреть профиль Отправить личное сообщение для Самурай Найти все сообщения от Самурай
  № 9  
Самурай
Ветеран форума

Регистрация: Aug 2001
Адрес: /kiev.ua/butuzov
Сообщений: 3,045
Отправить сообщение для Самурай с помощью ICQ
Что ж... вот маленький простойскрипт авторизаци. с использованием куков.

auth.php

PHP код:
<?
// в конфиге хранится информация о сединении с MYSQL сервером.

include "../config.php";

// обработка выхода пользователя.
if (isset($_GET['action']) && $_GET['action'] == "logout")
    {
    
setcookie('adminlogin''0'time()+644000);
    
setcookie('adminpass''0'time()+644000);
    
header("Location: login.php");
    die();
    }

// базово делалась для одного из админ интерфейсов.
// обратим внимание на значение масива $_POST єто названия логинговіх полей в форме.
if ((isset($_COOKIE['adminlogin']) && isset($_COOKIE['adminpass'])) || (isset($_POST['adminlogin']) && isset($_POST['adminpass'])))
    {

    
// проверка почему авторизироватся по $_POST ии по $_COOKIE
    
if (isset($_POST['submit']))
        {
        
$adminpassword=trim($_POST['adminpass']);
        
$adminpass=md5(trim($_POST['adminpass']));
        
$adminlogin=$_POST['adminlogin'];
        } else {
        
$adminpassword=trim($_COOKIE['adminpass']);
        
$adminpass=md5($_COOKIE['adminpass']);
        
$adminlogin=$_COOKIE['adminlogin'];
        }

    
$querynew=mysql_query("SELECT * FROM `admins` WHERE `login` = '$adminlogin' AND `pass` = '$adminpass'") or die (mysql_error());
    
$num=mysql_num_rows($querynew);

    if (
$num == "1")
        {
                                
// ставим куки.
        
@setcookie("adminlogin"$adminlogintime()+644000);
        @
setcookie("adminpass"$adminpasswordtime()+644000);
        } else {
        
// оправка пользователя на страницу дял логинга, в случае неудачного логинга.
                                 
header("Location: login.php");
        }
                
// так называется кнопка отпарвки информации из формы логинга
    
if (isset($_POST['submit']))
        {
        
header("Location: index.php");
        die();
        }

    } else {
    
header("Location: login.php ");
    die();
    }
?>
как видим мы используем здесь авторайз по данным хранящимся в MySQL.
табличка приблезительно такого содержания.

id INT авто инкремент
login VARCHAR(15) // 15 символов на логин
pass VARCHAR(32) // 32 символа нужно для шифровки пароля в ЬMD5

в скрипте встречаются таки страницы как
login.php // єто обікнвенній html файл с формой для логинга
index.php // єто файл для достпа по авторайзу.


содержание index.php может біть разнім но в первой строче нужно включить скрипт авторизации

PHP код:
<?
include "auth.php";
echo 
"вы авторизированы";
?>
если вы увидели что вы авторизированы, значит так и есть, если нет то увидите форму логинга.


примечание - сей скрипт не работает на сервере под управлением Apache 2. почему сам не знаю.
__________________
...

Старый 04.04.2004, 16:24
Usnul вне форума Посмотреть профиль Отправить личное сообщение для Usnul Посетить домашнюю страницу Usnul Найти все сообщения от Usnul
  № 10  
Usnul
 
Аватар для Usnul

Регистрация: Mar 2001
Адрес: во сне
Сообщений: 2,701
Отправить сообщение для Usnul с помощью ICQ
значит будем все переписывать
спасибо вам всем господа.
__________________
I'm only happy when it rains.
Waka Laka

Создать новую тему   Часовой пояс GMT +4, время: 13:52.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 13:52.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.