PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (10): « 1 2 3 [4] 5 6 7 8 9 ... » В конец

> Найдено сообщений: 140
Ammy Отправлено: 13 Января, 2010 - 13:56:47 • Тема: Помощь по проекту • Форум: Наработки по собственным проектам

Ответов: 55
Просмотров: 19128
Цитата:
Че за попытка плагиата?

Это я регулярку для никнейма тестировала. Ха-ха
Ammy Отправлено: 13 Января, 2010 - 12:52:54 • Тема: Помощь по проекту • Форум: Наработки по собственным проектам

Ответов: 55
Просмотров: 19128
Цитата:
А если есть такой логи и такой емейл?)

Верно, нету. Подмигивание Минус один лимит из запроса.
(Добавление)
PHP:
скопировать код в буфер обмена
  1. if ($row['user'] == $_POST['login']) $errors[] = 'Логин уже имеется в базе!';
  2.     if ($row['email'] == $_POST['mail']) $errors[] = 'Адрес уже имеется в базе!';

На это:

PHP:
скопировать код в буфер обмена
  1. if ($row['user'] ==$user) $errors[] = 'Логин уже имеется в базе!';
  2.     if ($row['email'] == $email) $errors[] = 'Адрес уже имеется в базе!';

Так как входящие данные уже ранее записываются в переменные.
(Добавление)
В идеале записано как:

PHP:
скопировать код в буфер обмена
  1.  
  2. $query = mysql_query("SELECT `user`, `email` FROM `users` WHERE `user` = '".mysql_real_escape_string($user)."' OR `email` = '".mysql_real_escape_string($email)."'") or die(mysql_error());
  3.  
  4.         $errors = array();
  5.  
  6.         while ($row = mysql_fetch_assoc($query)) {
  7.  
  8.             if ($row['user']  == $user)  $errors[] = 'логин уже используется!';
  9.             if ($row['email'] == $email) $errors[] = 'адрес уже используется!';
  10.  
  11.         }
  12.  
  13.         if ($errors) {
  14.  
  15.             foreach ($errors as $key => $value) echo $key . '-ая ошибка: ' . $value;
  16.             die();
  17.        }
  18.  

(Добавление)
Можно тестить, изменения внесла.
(Добавление)
Добавлен просмотр профиля.
В списке активен: http://bestdynamic[dot]orgfree[dot]com/i[dot][dot][dot]ex.php?do=secure
По умолчанию: http://bestdynamic[dot]orgfree[dot]com/i[dot][dot][dot]profile&id=1
Ammy Отправлено: 13 Января, 2010 - 12:35:56 • Тема: Помощь по проекту • Форум: Наработки по собственным проектам

Ответов: 55
Просмотров: 19128
Цитата:
Активацию аккаунтов через e-mail и вправду неплохо бы сделать, так как это есть наиболее верный способ проверки не только правильности написания e-mail адреса, но и его реальности и принадлежности вводящему данные.

Я проснулась. Сейчас займусь написанием. Из мыслей: при регистрации генерировать произвольную соль, которую обрабатывать md5 шифрованием, и записывать в базу данных, а пользователю mail функцией выслать письмо со ссылкой вида ?do=confirm&id=(int)&hash=(32 chars), и при переходе на неё давить проверку Улыбка
(Добавление)
Ещё придётся так же поля status добавить в таблицу users. Улыбка
(Добавление)
CODE (text):
скопировать код в буфер обмена
  1. select email, login ... where есть email or login;
  2. $errors = array();
  3. цикл $row = mysql_fetch {
  4.     Если $row[login] = $_POST[login] $errors[] = 'Логин уже есть';
  5.     Если $row[email] = $_POST[email] $errors[] = 'Email уже есть';
  6. }


PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. $query = mysql_query("SELECT `user`, `email` FROM `users` WHERE `user` = '".mysql_real_escape_string($user)."' OR `email` = '".mysql_real_escape_string($email)."' LIMIT 1") or die(mysql_error());
  4.  
  5. $errors = array();
  6.  
  7. while ($row = mysql_fetch_assoc($query)) {
  8.  
  9.     if ($row['user'] == $_POST['login']) $errors[] = 'Логин уже имеется в базе!';
  10.     if ($row['email'] == $_POST['mail']) $errors[] = 'Адрес уже имеется в базе!';
  11.  
  12. }
  13.  
  14. if ($errors) {
  15.  
  16.   foreach ($errors as $key => $value) echo 'Ошибка ' . $key . ' - '.$value;
  17.  
  18.   die(':p');
  19.  
  20. }
  21.  
  22.  
Ammy Отправлено: 12 Января, 2010 - 23:45:12 • Тема: Помощь по проекту • Форум: Наработки по собственным проектам

Ответов: 55
Просмотров: 19128
Я спать. Улыбка

Champion, если ты читаешь это сообщение, значит пора проводить ещё один тест. В этот раз визуальных неурядиц может быть наименьшее число, и, быть может, на сервере наконец выключат волшебные палочки. Завтра (то есть сегодня) буду писать профиль, загрузку аватаров (с опцией заливкой шелла естественно Ха-ха ), и смогу потом спокойно дописывать урок.

Как говорил Мелкий, нужно добавить максимально возможные мессенджер-поля, а так же дополнительные поля для описания себя. Ну и пол, думаю, тоже стоит включить в перечень профайловых опций, чтобы все не выглядели бесполыми сущностями. Ха-ха Спасибо всем большое!!
(Добавление)
Цитата:
Мысли такие: проверка адреса почты большого смысла не имеет(тавтология)
Зачем нужен адрес:
восстановление пароля
пересылка сообщений администрацией
спам.

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


Да, вы правы. Я соглашусь. Можно потом в админке написать блок кода, который будет взаимодействовать с контроллером, и выполнять поиск аккаунтов с одинаковыми адресами, а там уже чего-нибудь придумать. Улыбка
Ammy Отправлено: 12 Января, 2010 - 23:31:19 • Тема: Помощь по проекту • Форум: Наработки по собственным проектам

Ответов: 55
Просмотров: 19128
Я уже думала в пользу этого OR запроса, но, понимаете, нужно как-то конкретизировать пользователю что именно занято в данный момент. Если логин, то сообщить ему об этом, а если эл. адрес, то, соответственно, сообщить, что занят адрес. В данном случае получается, что если применить такой запрос, то приходится выводить расплывчатое уведомление о том, что одно из двух занято. Конечно, это не такая уж и проблема, но...
Ammy Отправлено: 12 Января, 2010 - 23:09:47 • Тема: Помощь по проекту • Форум: Наработки по собственным проектам

Ответов: 55
Просмотров: 19128
Мне кажется, что такой запрос не совсем правильный. Однако
Ammy Отправлено: 12 Января, 2010 - 22:26:18 • Тема: Помощь по проекту • Форум: Наработки по собственным проектам

Ответов: 55
Просмотров: 19128
Цитата:
Почему +1 запрос? На уникальность ника уже проверяете, осталось только добавить условие "или такое мыло занято"

PHP:
скопировать код в буфер обмена
  1. $query = mysql_query("SELECT `id` FROM `users` WHERE `user` = '".mysql_real_escape_string($user)."' LIMIT 1") or die(mysql_error());


OR `mail` = ? А?!
(Добавление)
IF EXISTS Ниндзя
Ammy Отправлено: 12 Января, 2010 - 20:33:18 • Тема: Помощь по проекту • Форум: Наработки по собственным проектам

Ответов: 55
Просмотров: 19128
Ch_chov, я написала о нём выше, и пока не исправила. Вывод списка пользователей в защищённой части - это временное решение, чтобы смотреть, кто зарегистрировался, а кто нет, поэтому написанию этого фрагмента уделила так мало внимания, в особенности с точки зрения безопасности. Сейчас поправлю..
(Добавление)
Итак:

Цитата:
Электронный адрес пропустила не правильный))

Цитата:
Попробуй исправь. Я уверен, в ней не хватает 2 символа.

^$ исправлено.

Цитата:
?do=bring_to_eat не работает. Я думал, мне поесть принесут, а там - ноль реакции.

Исправлено.

Цитата:
И логин из восьми кавычек не подходит по длине)

''''' подходит, а у тебя? Ха-ха

PHP:
скопировать код в буфер обмена
  1. if (strlen($user) < 3 || strlen($user) > 15) die('Логин должен состоять не менее, чем из 3 символов, но не более, чем из 15!');


Цитата:
Про XSS забыла.

Исправлено.

Цитата:
Имя пользователя dfg'gh выводится со слешем.

После перезагрузки серверов хостера.
(Добавление)
Вопросы:

1. Вернуть проверку на занятость адреса эл. почты? (+1 запрос к базе при регистрации)
2. Вернуть возможность свободного никнейма, или оставить так, как есть сейчас? (а сейчас можно регистрировать ники состоящие из валидных символов, знака подчёркивания, и никаких русских букв)
3. Нужно сделать возможность просмотра профиля и, соответственно, дать возможность заполнять профиль различными данными. Каков будет минимум этих данных исходя из общих положений потребности в них? На мой взгляд: аватар (традиция), подпись, icq, что ещё??
Ammy Отправлено: 12 Января, 2010 - 20:26:13 • Тема: Помощь по проекту • Форум: Наработки по собственным проектам

Ответов: 55
Просмотров: 19128
Цитата:
Ты ведь недавно тему про безопасность поднимала) Там есть штука для включенных магических кавычек

Ну не нравится мне это выражение, не хочется добавлять такие функции. Исходя из того, что не у всех они включены, кавычки эти, да и нужно будет - выключат. Ведь можно сделать:

PHP:
скопировать код в буфер обмена
  1.  
  2. if (get_magic_quotes_gpc()) die('Техническое требование: отключите волшебные кавычки');
  3.  


И в контроллер. )

bring_to_eat готово! Радость
Ammy Отправлено: 12 Января, 2010 - 20:14:51 • Тема: Помощь по проекту • Форум: Наработки по собственным проектам

Ответов: 55
Просмотров: 19128
Будет теперь чем время занять, спасибо!

Champion пишет:
Имя пользователя dfg'gh выводится со слешем.

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

Цитата:
Электронный адрес пропустила не правильный))

Регулярка плохая. Огорчение

Цитата:
?do=bring_to_eat не работает. Я думал, мне поесть принесут, а там - ноль реакции.

Улыбка Надо будет сделать там что-нибудь. Ха-ха

Цитата:
А еще я хочу загружать аву, музыку, видео и просматривать данные других пользователей, а не только их логины.


Хотела чат набросать, да пока с этими серверами возилась, не успела реализовать. Просмотр профиля точно будет, он как бы маст ниддэд.
Благодаря тебе заметила полу-XSS в выводе пользователей. С выводом поспешила там, нужно было в спешлчарс засунуть данные:

PHP:
скопировать код в буфер обмена
  1. while ($fetch = mysql_fetch_assoc($query)) printf('<b>%s</b> <br />', $fetch['user']);
Ammy Отправлено: 12 Января, 2010 - 18:11:33 • Тема: Помощь по проекту • Форум: Наработки по собственным проектам

Ответов: 55
Просмотров: 19128
Ладно, чёрт с ним, с хостом этим. Ничего хорошего. Вот новый, работающий: http://bestdynamic[dot]orgfree[dot]com/index.php
Ammy Отправлено: 12 Января, 2010 - 17:11:39 • Тема: Как вывести текст ТОЛЬКО в index.php ? • Форум: Напишите за меня, пожалуйста

Ответов: 3
Просмотров: 61
PHP:
скопировать код в буфер обмена
  1.  
  2. //index.php ..
  3.  
  4. $do = $_GET['do'];
  5.  
  6.  
  7. if ($do == 'addnews') {
  8.  
  9.      // .. do something
  10.  
  11. die();
  12. }
  13.  
  14. if ($do == 'reg') {
  15.  
  16.     // .. do something
  17.  
  18. die();
  19. }
  20.  
  21. // --- Всё то, что без ду
  22.  
  23. echo 'Я и есть index!';
  24.  
  25.  
  26.  


Или, скажем, если параметр не передан, выводить index as if ($do = 'index'), как Champion сказал.

Или использовать switch-case с default;

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. switch ($_GET['do']) {
  4.  
  5.     case reg: // если ?do=reg
  6.        
  7.      // .. do something
  8.  
  9.     break;
  10.  
  11.     case addnews: если ?do=addnews
  12.  
  13.         // .. do something;
  14.  
  15.     break;
  16.  
  17.     case fk_urself: ecли ?do=fk_urself
  18.        
  19.    // .. do something
  20.  
  21.     break;
  22.  
  23.     default: // по умолчанию
  24.        echo "Вывести что-то, если параметр не передан";
  25. }
  26.  
  27.  
Ammy Отправлено: 12 Января, 2010 - 16:00:39 • Тема: Помощь по проекту • Форум: Наработки по собственным проектам

Ответов: 55
Просмотров: 19128
Это весьма странно. EuGen'а пустили, и меня пускает сейчас.
(Добавление)
Под проксей проверила - не работает. Однако Видимо, придётся подождать, пока не включат.
Ammy Отправлено: 12 Января, 2010 - 15:55:29 • Тема: Помощь по проекту • Форум: Наработки по собственным проектам

Ответов: 55
Просмотров: 19128
Цитата:
надо http://dynarec[dot]comuf[dot]com/ зайти сюда и тестить?

Да. Улыбка

http://dynarec[dot]comuf[dot]com/index.php?do=secure - целевая защищённая зона
http://dynarec[dot]comuf[dot]com/index.php?do=register - регистрация
http://dynarec[dot]comuf[dot]com/index.php?do=login - аутентификация (выдача cookie)
http://dynarec[dot]comuf[dot]com/index.php?do=logout - выход (удаление cookie)
(Добавление)
EuGen пишет:
http://dynarec[dot]comuf[dot]com/index.php?do=fFfff
В ответ ничего, вернее это:


Это, видимо, появившийся баннер хостера.



PHP:
скопировать код в буфер обмена
  1.  
  2. // заложены проверки
  3.  
  4. if ($action == 'something')
  5.  
  6.  
Ammy Отправлено: 12 Января, 2010 - 15:44:06 • Тема: Помощь по проекту • Форум: Наработки по собственным проектам

Ответов: 55
Просмотров: 19128
Улыбка Доработала скрипт. После авторизации выводится массив с сессией (для дебагга). Под index'ом на главной.

Цитата:
Я в этой теме даже не писал ничего)) Чего за продукт? как его поддерживать надо?

Система регистрации. В будущем будет использована как пример для урока. Просто посмотреть нужно, как себя вести будет. )

Цитата:
Спокойной ночи, кстати. С опозданием немного, но да ладно

Улыбка Спасибо! 8 часов вышло на сон.

Страниц (10): « 1 2 3 [4] 5 6 7 8 9 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB