с ващей помощью спустя пару недель скрипт был переписан ,
все работает успешно , но думаю не все безапасно ,
если есть у кого возможность посмотрите ошибки
еще такая проблемка возникла , скрипт писался для wap сайта ,
но как оказалось что не все телефоны имеют куки ,
что посоветуете если их убрать то как сделать чтоб
пользователя запоминал браузер ?
вот скрипты :
Регистрация:
<?php
if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} }
if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }
if (isset($_POST['email'])) { $email = $_POST['email']; if ($email == '') { unset($email);} }
if (empty($login) or empty($password) or empty($email))
{
include './skins/tpl/index.tpl';
exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!");
}
$login = stripslashes($login);
$login = htmlspecialchars($login);
$password = stripslashes($password);
$password = htmlspecialchars($password);
if (strlen($login) < 3 or strlen($login) > 15)
{
include './skins/tpl/index.tpl';
exit ("Логин должен состоять не менее чем из 3 символов и не более чем из 15.");
}
if (strlen($password) < 3 or strlen($password) > 15)
{
include './skins/tpl/index.tpl';
exit ("Пароль должен состоять не менее чем из 3 символов и не более чем из 15.");
}
$password = md5($password);
if (!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $email))
{
include './skins/tpl/index.tpl';
exit ("Неверно введен е-mail!");}
include './bd.php';
$result = mysql_query("SELECT id FROM users WHERE login='$login'",$db);
$myrow = mysql_fetch_array($result);
if (!empty($myrow['id']))
{
include './skins/tpl/index.tpl';
exit ("Извините, введённый вами логин уже зарегистрирован. Введите другой логин.");
}
$result2 = mysql_query ("INSERT INTO `users` (`login`,`password`,`reg_date`,`email`,`reg_ip`) VALUES('".$login."','".$password."','".date("Y-m-d")."','".$email."','".$_SERVER['REMOTE_ADDR']."')") or die(mysql_error());
if ($result2=='TRUE')
{
echo header('Location: index2.php');
}
else {
echo "Ошибка! Вы не зарегистрированы.";
}
?>
Авторизация:
<?php
session_start();
$login = (isset($_COOKIE['cLogin'])) ? $_COOKIE['cLogin'] : null;
$password = (isset($_COOKIE['cPass'])) ? $_COOKIE['cPass'] : null;
if ($login == null || $password == null)
{
$login = (isset($_POST['login'])) ? $_POST['login'] : null;
$password = (isset($_POST['password'])) ? $_POST['password'] : null;
}
if ($login == null || $password == null)
{
exit('Вы ввели не всю информацию, вернитесь назад и заполните все поля!');
}
$remember = (isset($_POST['remember'])) ? 1 : 0;
$passFrom = 1;
if (isset($_COOKIE['cPass']))
$passFrom = 2;
$login = trim(strip_tags($login));
$password = trim(strip_tags($password));
$password = ($passFrom == 2) ? $password : md5($password);
include_once './bd.php';
$query = "SELECT * FROM users WHERE `login` = '%s'";
$query = sprintf($query, mysql_real_escape_string($login));
$query = mysql_query($query, $db);
$result = mysql_fetch_assoc($query);
if (!$result)
{
exit("Извините, введённый вами login или пароль неверный.");
}
if ($result['password'] !== $password)
{
exit("Извините, введённый вами login или пароль неверный.");
}
$_SESSION['login'] = $login;
$_SESSION['id'] = $result['id'];
if ($remember)
{
setcookie('cLogin', $login, time()+24*60*60);
setcookie('cPass', $result['password'], time()+24*60*60);
}
header('Location: index2.php');
?>
Вот еще один скрипт если не затруднит посмотрите за одно скрипт востановление пароля:
<?php
include './bd.php';
if (isset($_POST['submit'])){
$login = $_POST['login'];
$email = $_POST['email'];
if (empty($login)){
echo '<p class="new8">Введите логин!</p>';
}
elseif (empty($email)){
echo '<p class="new8">Введите e-mail!</p>';
}
else{
$resultat = mysql_query("SELECT * FROM users WHERE login = '$login' AND email = '$email'");
$array = mysql_fetch_array($resultat);
if (empty($array)){
echo '<p class="new8">Ошибка! Такого пользователя не существует</p>';
}
elseif (mysql_num_rows($resultat) > 0){
$chars="qazxswedcvfrtgbnhyujmkiolp1234567890QAZXSWEDCVFRTGBNHYUJMKIOLP";
$max=10;
$size=StrLen($chars)-1;
$password=null;
while($max--) {
$password.=$chars[rand(0,$size)];
}
$newmdPassword = md5($password);
$title = 'Востановления пароля пользователю '.$login.' для сайта FD-Games.ru!';
$letter = 'Вы запросили восстановление пароля для аккаунта '.$login.'
На сайте FD-Games.ru
Ваш новый пароль: '.$password.'
С уважением админестрация сайта FD-Games.ru';
if (mail($email, $title, $letter, "Content-type:text/plain; Charset=UTF-8\r\n")) {
mysql_query("UPDATE users SET password = '$newmdPassword' WHERE login = '$login' AND email = '$email'");
echo '<p class="new8">Новый пароль отправлен на ваш e-mail!</p>';
}
}
}
}
mysql_close();
?>
Спасибо :) :) :)
Спустя 8 минут, 55 секунд (10.07.2012 - 01:03) inpost написал(а):
Лучше стало, Попов остался
Идентификатор сессии можно передавать через GET параметр в браузере (в ссылке), не обязательно в куках хранить.
Идентификатор сессии можно передавать через GET параметр в браузере (в ссылке), не обязательно в куках хранить.
Спустя 3 минуты, 14 секунд (10.07.2012 - 01:06) Денис777 написал(а):
inpost С Поповом конечно ошибка хорошая произошла , раз начал переделывать , не выкидывать же теперь скрипты или лучше выкинуть ?
Спустя 2 часа, 2 минуты, 51 секунда (10.07.2012 - 03:09) twin написал(а):
Такие - лучше выкинуть. И никогда не нужно жалеть написанных скриптов- это всего навсего буквы. Если жалеть каждую буковку - никогда не будет движения вперед.
Спустя 6 минут, 24 секунды (10.07.2012 - 03:15) I++ написал(а):
Еще неплохо запомнить одно простое правило:
1. Всё, что приходит от пользователя опасно для жизни. Фильтровать нужно любые данные, чтобы они соответствовали шаблону который был предусмотрен на получение каких либо данных, все остальное отметать.
1. Всё, что приходит от пользователя опасно для жизни. Фильтровать нужно любые данные, чтобы они соответствовали шаблону который был предусмотрен на получение каких либо данных, все остальное отметать.
Цитата |
$resultat = mysql_query("SELECT * FROM users WHERE login = '$login' AND email = '$email'"); |
Явный SQL inject.
Если логин должен содержать только латиницу и числа, используйте регулярные выражения для проверки.
Спустя 2 минуты, 6 секунд (10.07.2012 - 03:17) Денис777 написал(а):
Обрадывали конечно
Спустя 28 минут, 49 секунд (10.07.2012 - 03:46) inpost написал(а):
Денис777
Это не его скрипты, это уже твои скрипты. Ты пишешь их из головы, ведь ты учился и запоминал, а не копи-пастишь одно и то же. Он тебя неправильно научил и теперь ТЫ неправильно пишешь скрипты, не надо проблемы перекидывать на других людей, проблемы всегда надо искать в себе. Когда ты поймешь, что ты неправильно делаешь, тогда быстрее переучишься.
Тебе говорили насчёт того, что нельзя держать в куках, а ты продолжаешь, я ссылку давал, а ты тоже ничего на данный момент не изменил. Ты за это время уже должен был набрать много информации как и что менять, а пока что я не вижу, чтобы хотя бы часть из этого ты изменил, увы.
А тот код выше, мне кажется, что он скопи-пастенный от другого человека, который именно в таком же виде тебе и дал.
Но не всё потеряно, все с чего-то начинают, просто надо учиться больше и больше, и тогда через годик будешь хорошо программировать
Это не его скрипты, это уже твои скрипты. Ты пишешь их из головы, ведь ты учился и запоминал, а не копи-пастишь одно и то же. Он тебя неправильно научил и теперь ТЫ неправильно пишешь скрипты, не надо проблемы перекидывать на других людей, проблемы всегда надо искать в себе. Когда ты поймешь, что ты неправильно делаешь, тогда быстрее переучишься.
Тебе говорили насчёт того, что нельзя держать в куках, а ты продолжаешь, я ссылку давал, а ты тоже ничего на данный момент не изменил. Ты за это время уже должен был набрать много информации как и что менять, а пока что я не вижу, чтобы хотя бы часть из этого ты изменил, увы.
А тот код выше, мне кажется, что он скопи-пастенный от другого человека, который именно в таком же виде тебе и дал.
Но не всё потеряно, все с чего-то начинают, просто надо учиться больше и больше, и тогда через годик будешь хорошо программировать
Спустя 8 часов, 46 минут, 16 секунд (10.07.2012 - 12:32) DarkLynx написал(а):
Мой Вам совет. Не учиться по какому то конкретному курсу, а в общем поставить себе задачу, например сделать регистрацию.. И просто открываете браузер, гугл и ищите ищите разные решения, осмысливаете, обдумываете, что не понятно - читаете в мануале.. И только после того как всё взвесили и оценили, ну хотя бы большую часть, тогда приступаете к написанию своего.. И причем нужно писать именно САМОМУ, каждую буковку, каждый символ.. Это необходимо для лучшего запоминания тех действий что Вы делаете..
хотя может я и не прав, но я учился так..
хотя может я и не прав, но я учился так..
Спустя 1 час, 42 минуты, 13 секунд (10.07.2012 - 14:14) inpost написал(а):
DarkLynx
Я думаю, что по такой схеме и учился Попов.
Если нет логики в своей голове, то на примере других надо развивать логику. Практика + практика других качественных авторов. Того же Котерова почитать. А в гугле найдётся снова Попов, и чем это лучше?
Я думаю, что по такой схеме и учился Попов.
Если нет логики в своей голове, то на примере других надо развивать логику. Практика + практика других качественных авторов. Того же Котерова почитать. А в гугле найдётся снова Попов, и чем это лучше?
Спустя 16 часов, 29 минут, 52 секунды (11.07.2012 - 06:44) DarkLynx написал(а):
inpost,
Цитата |
И только после того как всё взвесили и оценили, ну хотя бы большую часть, тогда приступаете к написанию своего.. |
Тут я предполагал именно то что Вы сказали, самому осмысливать написанное и разобраться именно в процессе работы скрипта, а не просто глянуть разные решения и копи-паст..
Ну и конечно это все относится к человеку который хочет и стремится научиться.. Если человеку надо "просто сделать", то ему ничего не поможет научиться.