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

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


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

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

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

Имеется поле, в котором юзер пишет всякую инфу и пароль, после нажатия отправки, форма обрабатывается через скрипт, который заносит в 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

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

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

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

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

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

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

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

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

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

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