Перейти к контенту

Ищу простенький скрипт


Рекомендуемые сообщения

Нужен скрипт авторизации пользователя на странице.

Вкратце для чего нужен...и с чем должен совместиться и работать при этом:

Имеется поле, в котором юзер пишет всякую инфу и пароль, после нажатия отправки, форма обрабатывается через скрипт, который заносит в mysql введенный пароль varchar'om (md5 влом делать) ) Добавляется примерно так...

$password = $HTTP_GET_VARS["password"];
$sql = "INSERT INTO $dtable (id,password) ";
$sql .= "VALUES (' ','$password')";

Вообщем в mysql получается varchar со значением пароля...

От скрипта, который я страстно хочу получить требуется:

При нажатии на ссылку, ну к примеру login.html появляется форма с полем "введите ID" и "введите пароль", ну и после ввода и submit чтобы скрипт проверял совпадение id и пароля, хранимого в базе и соответственно пускал юзера дальше или не пускал...сам я что-то косячу, вроде просто, а я толком php не изучал ;) Никто такого простого не видел чуда? :D

Ссылка на комментарий
Поделиться на других сайтах

md5 влом делать

насмешил :D

 

$hash = md5($pass);

 

чего тут в лом-то? ;)

Ссылка на комментарий
Поделиться на других сайтах

после ввода и submit чтобы скрипт проверял совпадение id и пароля, хранимого в базе и соответственно пускал юзера дальше или не пускал...

 

Пишу образно. Главное, понять идею. ;)

 

Скрыпт:

 

получаем введенный ID ($login)
получаем введенный Pass ($pass) 
делаем запрос в бд ($DB['login'] и $DB['pass'])

 

дальше, пишем прим. следующее:

 

if($login == $DB['login'] && $pass == $DB['pass']){
редирект, туда, куда надо.
} else {
выводим ошибку или проводим другие действия
}

 

Надеюсь понятно объяснил :D

Ссылка на комментарий
Поделиться на других сайтах

Еve

Спасибо, все работает :D

 

Добавлено в [mergetime]1099100957[/mergetime]

Вот только в одну сторону )) При вводе правильного id и пароля не пускает )

 

вообщем вто чего я горе-напрограммил ;)

 

форма ввода id и пароля

<html>
<head>
<title>Авторизация...</title>
</head>
<body bgcolor="#FFFFFF">
<form name="auth" action="auth.php" >

<table cellspacing="2" cellpadding="2" border="0">
<tr>
<td>ID ресурса</td>
<td>
<input type="text" name="id"></td>
</tr>
<tr>
<td>Пароль</td>
<td><input type="text" name="password"></td>
</tr>
</table>
<input type="submit" name="submit" value="Ок">
</form>
</body>
</html>

 

 

сам скрипт авторизации

 

<?php
require_once ('ini.php');
   mysql_connect ("$host", "$user_db", "$pass_db");
   mysql_select_db("$dbase");
   $id = $HTTP_GET_VARS["id"];
   $password = $HTTP_GET_VARS["password"];
   $sql = "SELECT * FROM $dtable (id,password) ";
   $sql .= "VALUES ('','$password')";
// проверка на введенный id и пароль
   if($id == $dtable['$id'] && $password == $dtable['$password']) {
echo "Все ок, редирект";
print "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"2; URL=edit.php\">";
}
else {
echo "Неправильный ID или пароль ресурса.";

print "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"4; URL=index.php\">";
}
?>

 

ну и ini.php

 

<?php
   $host = "localhost";
   $user_db = "root";
   $pass_db = "";
   $dbase = "resources";
   $dtable = "resources";
    ?>

 

а вот дамп таблицы откуда мне надо выбрать данные для проверки

 

# phpMyAdmin SQL Dump
# version 2.5.3
# [URL=http://www.phpmyadmin.net]http://www.phpmyadmin.net[/URL]
#
# Хост: localhost
# Время создания: Окт 30 2004 г., 05:51
# Версия сервера: 3.23.53
# Версия PHP: 4.3.6
# 
# БД : `resources`
# 

# --------------------------------------------------------

#
# Структура таблицы `resources`
#

CREATE TABLE `resources` (
  `id` int(10) NOT NULL auto_increment,
  `type` varchar(10) NOT NULL default '',
  `name` varchar(32) NOT NULL default '',
  `description` varchar(50) NOT NULL default '',
  `ip` varchar(32) NOT NULL default '',
  `dns` varchar(32) NOT NULL default '',
  `lan` varchar(15) NOT NULL default '',
  `time` varchar(15) NOT NULL default '',
  `icq` varchar(15) NOT NULL default '',
  `ipdetect` varchar(20) NOT NULL default '',
  `password` varchar(30) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=20;

#
# Дамп данных таблицы `resources`
#

INSERT INTO `resources` VALUES (1, '');
INSERT INTO `resources` VALUES (2, '');
INSERT INTO `resources` VALUES (3, '');
INSERT INTO `resources` VALUES (4, '');
INSERT INTO `resources` VALUES (5, '');
INSERT INTO `resources` VALUES (6, '');
INSERT INTO `resources` VALUES (7, '');
INSERT INTO `resources` VALUES (8, '');
INSERT INTO `resources` VALUES (9, '123');
INSERT INTO `resources` VALUES (10, '75373');
INSERT INTO `resources` VALUES (11, '75373');
INSERT INTO `resources` VALUES (12, '7547');
INSERT INTO `resources` VALUES (13, '7547');
INSERT INTO `resources` VALUES (14, '2213');
INSERT INTO `resources` VALUES (15, 'fffujyoi');
INSERT INTO `resources` VALUES (16, '3');
INSERT INTO `resources` VALUES (17, 'лрпвл');
INSERT INTO `resources` VALUES (18, 'лрпвл');
INSERT INTO `resources` VALUES (19, '111');

Ссылка на комментарий
Поделиться на других сайтах

Вот тут кажись ошибка закралась:

if($id == $dtable['$id'] && $password == $dtable['$password']) {

Исправь на:

if($id == $dtable['id'] && $password == $dtable['password']) {

:D

Ссылка на комментарий
Поделиться на других сайтах

<form name="auth" action="auth.php" >

заменить на:

<form name="auth" action="auth.php" method="post">

 

 

$id = $HTTP_GET_VARS["id"];

$password = $HTTP_GET_VARS["password"];

заменить на:

$id = $_POST["id"];

$password = $_POST["password"];

мы же не хотим , чтобы пасс светился в адресной строке? :D

 

 

а это что за тихий ужас? ;)

$sql = "SELECT * FROM $dtable (id,password) ";

$sql .= "VALUES ('','$password')";

заменить на:

$sql = "SELECT id, password FROM $dtable WHERE password='$password'";

 

 

идем дальше, а где собственно выполнение запроса сиквела? :)

добавляем:

$dtable = mysql_query($sql);

 

 

if($id == $dtable['$id'] && $password == $dtable['$password']) {

заменить на:

if(($id == $dtable['id']) && ($password == $dtable['password'])) {

 

 

вроде все :)

Ссылка на комментарий
Поделиться на других сайтах

Cepera

Мне вот это надо было привести? Это ошибка при неправильном вводе id и пароля - я такую же наблюдаю, набирая правильные id и пароли ;)

echo "Неправильный ID или пароль ресурса.";

Ясно понятно, что это echo я вижу постоянно :D

Ссылка на комментарий
Поделиться на других сайтах

Ну привык я к include'ам :D

Сама форма

<html>
<head>
<title>Авторизация...</title>
</head>
<body bgcolor="#FFFFFF">
<form name="auth" action="auth.php" method="POST">

<table cellspacing="2" cellpadding="2" border="0">
<tr>
<td>ID ресурса</td>
<td>
<input type="text" name="id"></td>
</tr>
<tr>
<td>Пароль</td>
<td><input type="text" name="password"></td>
</tr>
</table>
<input type="submit" name="submit" value="Ок">
</form>
</body>
</html>

 

Сам скрипт, дамп базы класть не буду, он выше есть.

 

<?php
// Проверка пароля и id перед редактированием...
require_once ('ini.php');
// Соединяемся с базой
   mysql_connect ("$host", "$user_db", "$pass_db");
   mysql_select_db("$dbase");
  $id = $_POST["id"];
  $password = $_POST["password"];

  $sql = "SELECT id, password FROM $dtable WHERE password='$password'";
  $dtable = mysql_query($sql);
  // проверка на введенный id и пароль


   if(($id == $dtable['id']) && ($password == $dtable['password'])) {
//редирект.
echo "Все ок, редирект";
print "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"2; URL=edit.php\">";
}
else {
echo "Неправильный ID или пароль ресурса.";
print "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"4; URL=index.php\">";
}
?>

Ссылка на комментарий
Поделиться на других сайтах

ну что ж, поэтапно... проверки ставим и упрощаем

mysql_connect ("$host", "$user_db", "$pass_db");

mysql_select_db("$dbase");

меняем на:

mysql_connect ($host, $user_db, $pass_db) or die("Could not connect to a server.");

mysql_select_db($dbase) or die("Could not select a db.");

 

если все ок - бредем дальше :D

 

$sql = "SELECT id, password FROM $dtable WHERE password='$password'";

$dtable = mysql_query($sql);

меняем на (и сразу нашлась ошибка):

$result = mysql_query("SELECT id, password FROM $dtable WHERE password='$password'") or die("Could not execute a query.");

if ($dtable = mysql_fetch_row($result)) header("Location: файл_куда_есть_доступ");

else echo "Get away ;)";

 

все

Ссылка на комментарий
Поделиться на других сайтах

Вот блин я бот :D

Вот что получаем.

Warning: Cannot modify header information - headers already sent by (output started at z:\home\10.14.132.3\www\res\ini.php:13) in z:\home\10.14.132.3\www\res\auth.php on line 15

Ссылка на комментарий
Поделиться на других сайтах

а что есть 13 строка?

Добавлено в [mergetime]1099124778[/mergetime]

лучше сразу опять целым листингом, мало ли что еще появится

Ссылка на комментарий
Поделиться на других сайтах

<?php
// Проверка пароля и id перед редактированием...
require_once ('ini.php');
// Соединяемся с базой
  mysql_connect ($host, $user_db, $pass_db) or die("Could not connect to a server.");
  mysql_select_db($dbase) or die("Could not select a db.");
  $id = $_POST["id"];
  $password = $_POST["password"];
 // проверка на введенный id и пароль
$result = mysql_query("SELECT id, password FROM $dtable WHERE password='$password'") or die("Could not execute a query.");
if ($dtable = mysql_fetch_row($result)) {
        header("Location: edit.php"); }
else {
echo "Get away "; }
?>

Изменено пользователем Felix
Ссылка на комментарий
Поделиться на других сайтах

Нет, просто ошибка, написанная 2мя постами выше. В ini.php только настройки выбора бд. Вообщем он тоже тут лежит выше где-то.
Ссылка на комментарий
Поделиться на других сайтах

кстати, свою ошибку увидел :D

SELECT id, password FROM $dtable WHERE password='$password'

заменить на

SELECT id FROM $dtable WHERE password='$password' AND id='$id'

 

модифицировал старый запрос, а проверку id не повесил...

Добавлено в [mergetime]1099125717[/mergetime]

проверьте ;)

<?php
$host = "localhost";
$user_db = "root";
$pass_db = "";
$dbase = "resources";
$dtable = "resources";
mysql_connect ($host, $user_db, $pass_db) or die("Could not connect to a server.");
mysql_select_db($dbase) or die("Could not select a db.");
$id = $_POST["id"];
$password = $_POST["password"];
$result = mysql_query("SELECT id ROM $dtable WHERE password='$password' AND id='$id'") or die("Could not execute a query.");
if ($dt = mysql_fetch_row($result)) echo "OK";
else echo "Failed";
?>

Ссылка на комментарий
Поделиться на других сайтах

Сначала не работало, но после того как поменял SELECT id ROM $dtable на SELECT id FROM $dtable все заработало, спасибо :D

Зы темку не закрывайте друг меня бота такого еще на что-нибудь пробьет, все-таки проект как-никак ;)

Ссылка на комментарий
Поделиться на других сайтах

Так, а как проверку сделать чтобы просто так без логина в edit.php никто не заходил, не пройдя auth.php? +) Желательно без редиректа, таблица banned уже есть...

# Структура таблицы `banned`
#

CREATE TABLE `banned` (
  `id` int(10) NOT NULL auto_increment,
  `ipaddr` varchar(32) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=18;

#
# Дамп данных таблицы `banned`
#

INSERT INTO `banned` VALUES (1, '1.2.3.4');
INSERT INTO `banned` VALUES (2, '12.13.1.14');
INSERT INTO `banned` VALUES (3, '2.3.4.32');

 

Да, и если есть простенький скрипт на проверку ip перед заходом без всяких групп и тд с юзанием mysql - подкиньте ссылочку, а то из меня яндексер как и sql-программист :D

пока только нарисовал в одну сторону - в сторону "не войдешь" ;)

 

<?php
$ipaddr = $REMOTE_ADDR;
require_once('ini.php');
mysql_connect ($host, $user_db, $pass_db) or die("Невозможно соединиться с mysql сервером.");
mysql_select_db($dbase) or die("Невозможно выбрать БД.");
$result = mysql_query("SELECT ipaddr FROM $dtable2 WHERE ipaddr='$ipaddr'") or die("Невозможно выполнить запрос.");
if ($dt2 = mysql_fetch_row($result)) {
echo "4325432532";
print "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0; URL=index.php\">";
                                     }
else                                  {

echo "Попытка доступа записана в логах.";
print "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"4; URL=\">";}


?>

Изменено пользователем Felix
Ссылка на комментарий
Поделиться на других сайтах

после того как поменял SELECT id ROM $dtable на SELECT id FROM $dtable

оригинально.

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.