[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Переписаный скрипт Попова , возможно еще не всё
Денис777
Спасибо всем , за помощь исправления скриптов Евгения Попова ,
с ващей помощью спустя пару недель скрипт был переписан ,
все работает успешно , но думаю не все безапасно ,
если есть у кого возможность посмотрите ошибки

еще такая проблемка возникла , скрипт писался для 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 написал(а):
Лучше стало, Попов остался smile.gif
Идентификатор сессии можно передавать через 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. Всё, что приходит от пользователя опасно для жизни. Фильтровать нужно любые данные, чтобы они соответствовали шаблону который был предусмотрен на получение каких либо данных, все остальное отметать.

Цитата
$resultat = mysql_query("SELECT * FROM users WHERE login = '$login' AND email = '$email'");


Явный SQL inject.

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

Спустя 2 минуты, 6 секунд (10.07.2012 - 03:17) Денис777 написал(а):
Обрадывали конечно biggrin.gif

Спустя 28 минут, 49 секунд (10.07.2012 - 03:46) inpost написал(а):
Денис777
Это не его скрипты, это уже твои скрипты. Ты пишешь их из головы, ведь ты учился и запоминал, а не копи-пастишь одно и то же. Он тебя неправильно научил и теперь ТЫ неправильно пишешь скрипты, не надо проблемы перекидывать на других людей, проблемы всегда надо искать в себе. Когда ты поймешь, что ты неправильно делаешь, тогда быстрее переучишься.

Тебе говорили насчёт того, что нельзя держать в куках, а ты продолжаешь, я ссылку давал, а ты тоже ничего на данный момент не изменил. Ты за это время уже должен был набрать много информации как и что менять, а пока что я не вижу, чтобы хотя бы часть из этого ты изменил, увы.
А тот код выше, мне кажется, что он скопи-пастенный от другого человека, который именно в таком же виде тебе и дал.

Но не всё потеряно, все с чего-то начинают, просто надо учиться больше и больше, и тогда через годик будешь хорошо программировать smile.gif

Спустя 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,
Цитата
И только после того как всё взвесили и оценили, ну хотя бы большую часть, тогда приступаете к написанию своего..

Тут я предполагал именно то что Вы сказали, самому осмысливать написанное и разобраться именно в процессе работы скрипта, а не просто глянуть разные решения и копи-паст..

Ну и конечно это все относится к человеку который хочет и стремится научиться.. Если человеку надо "просто сделать", то ему ничего не поможет научиться.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.