Jump to content

hummermania

User
  • Posts

    38
  • Joined

  • Last visited

Everything posted by hummermania

  1. А можно и вообще без else сделать. В условии проверить на isset ($_GET/$_POST['имя кнопки формы']) - если да то внутри скобок идет основной алгоритм скрипта. Дополнительно нужно проверить данные пришедшие из каждого поля! (не доверяйте даже скрытым полям, которые сами же и задали) - потом логика скрипта. А на else - можно поставить вывод опять той же формы! if(isset ($_GET/$_POST['имя кнопки формы']) { // 1-проверка первого поля на тип данных и на недопустимые символы ..... // 2 -проверка второго и т.д. полей ..... // 3 логика скрипта } else { // вывод формы } А и еще. Чтобы выводить сообщения об ошибках - их надо собирать по мере проверок полей формы. т.е. завести себе переменную в которую конкатенацией добавлять сообщения об ошибках если таковые будут появляться по логике скрипта или по результатам проверок. Если на сайте предполагается большое кол-во полей и форм - то я себе сделал класс который накапливает сообщения и может их все скопом распечатывать перебирая элементы массива. и универсальную ф-цию проверки поля. Использую eregi_replace для проверки на недопустимые символы.
  2. Спасибо Вадиму за полноценный анализ. Согласен с ним почти по всем пунктам. Ваш анализ будет основой на встрече учредителей и первым серьезным этапом для кардинальных изменений. Наша команда постоянно говорит, что чего-то нехватает. И это что-то четко подмечено и указано Вадимом.
  3. А файлы есть в папке? Судя по тому что на место $rezult - выдается в таблице пустая ячейка - то файлы хоть и есть но пустые. И как должна тогда отображаться таблица?
  4. тут не только дизайнер - еще и верстальщик-ценз и кодер-руки-из-жопы Вместо оскорблений лучше бы конкретно указывали что вот это - полная ...ня, здесь - надо бы так то и так то. А то как опускать чужую работу - так мы первые. Профессионалами становятся а не рождаются.
  5. И ч? ты врешь, ставя значек CSS-valid? http://jigsaw.w3.org/css-validator/validat...rning=1〈=en Вот теперь ЦСС - валид!
  6. =) Спасибо за комменты - передам дизайнеру. Я в дизе не силен, так по мелочи.
  7. Позвольте не согласиться. Все надо использовать когда уместно. если мне надо включить десяток простых html страничек с выводом значением допустим одной переменной, то да require() то что нужно. Но если у меня есть ветвистый алгоритм и эта сотня страничек в свою очеред содержит дальнейшее ветвление и выполнение операций, то тащить их все require() в первоначальный файл не имеет смысла. только память забиваем и увеличиваем время распарсивания. потому что то что подключено require(), еще не значит что может понадобиться. а парсер по ненужному содержанию все-равно пройдется. Согласен. Инклудом удобно подключать файлы содержащие наборы ф-ций - бибилотеки, констант, или классов. А рекуайр больше для построения страниц из шаблонов.
  8. По идее должно. Парсер вначале считает код в память, потом содержимое файла рек.пхп и включит в памяти как продолжение -НЕЗАВИСИМО от того сработает ли условие. Т.е. на этапе непосредственно парсинга, обработки, а не на этапе исполнения кода.
  9. - для профи конечно вкусненькие куски кода, а для новичка - бред сумасшедшего. Такая же ботва получается если на Визуал Си писать сетевые проги на API - вот там бред полный
  10. Хм, а почему ДВЕ формы???? Если хотите двумя скриптами: form.php - файл скажем формы <form action='add_img.php' method='POST' enctype='multipart/form-data'> Фото: <input type='file' name='t_item'> <input type='submit' name='ok' value='Добавить' /> </form> Имеем форму а в ней поле с кнопкой обзор справа и кнопку отправки. После выбора файла путь к нему высветится в текстовом поле. А после нажатия браузер вызовет скрипт add_img.php, в который и обьединяем оба кода: занесение в базу, и копирование в папку на сервере. if (isset($_POST['ok'])) { $success=0; $upfiledir=$upfile=$uplink=''; // копируем пришедший из формы файл в папку с фотками $upfiledir = $_SERVER['DOCUMENT_ROOT']."/MySite/foto_img/";/* Определяем директорию на сервере. */ $upfile = $upfiledir.$_FILES['t_item']['name']);/* Полное имя загружаемого файла */ if (move_uploaded_file($_FILES['t_item']['tmp_name'], $upfile ) )/* если файл перемещен в нужную директорию выводим информацию */ { $uplink = "/MySite/foto_img/".$_FILES['t_item']['name'];/* Данная переменная хранит относительную ссылку, которую можно поместить в БД */ $success++; } // фиксируем название файла в базе, только в том случае если он успешно скопировался if ($success) { $result = mysql_query ('INSERT INTO data (img) VALUES ("'.$uplink.'")'); if (mysql_affected_rows($result)==1) // если вставка была успешна $success++; } if($success==2) // Если успешны обе операции! { echo "Файл ".$_FILES['t_item']['name']." успешно загружен на сервер! Размер: ".$_FILES['t_item']['size']." байт. тип: ".$_FILES['t_item']['type']." } } Кстати $_FILES['t_item']['name'] - должен содержать только имя файла, путь на локальной машине откуда берется этот файл браузер же никогда не передает. ( в данном случае - aaa.jpg)
  11. Ну вот в статье ясно сказано что быстродействие снизится если инклудом подключать много файлов, из-за множественных переключений (скорее всего из-за многочисленных вызовов открытия, чтения и закрытия файлов во время исполнения). Если надо подключить немного файлов -то разницы по большому счету нет - и include и require дадут одинаковый результат. ошибки вылезут в случае отсутствия файла. А если файлов много - то конешна рекуайр.
  12. Можно еще прочувстовать разницу между ними если знать как ПХП обрабатывает файлы. Допустим мы запросили файл index.php - в корне сайта. ПХП считывает его, разбирая синтаксис. После анализа формирует в памяти внутреннее предсатвление считанного файла в виде конкретных инструкций. И затем выполняет их последовательно. В результате получаем ХТМЛ ответ. Если попадается инструкция include - парсер ПХП останавливает обработку текущего файла, и переключается на тот который в инклуде. Например include("news.php") - ищет и разбирает по строкам файл новостей. Потом опять возвращается к Индекс. Если не ошибаюсь то для всех обрабатываемых файлов создаются отдельные таблицы внутреннего для ПХП представления переменных и функций. Что приводит к некоторым накладным расходам. Если подключаемый файл отсутствует - выдается лишь ворнинг и обработка Индекс продолжается. Если же вместо include будет require - то весь текст файла вставляется в индекс, т.е. в памяти он становится одним. И все рекуайр аналогично. Весь индекс пхп становится одним, состоящим из кода всех подключаемых файлов. И при анализе уже одного большого файла создается одна таблица ф-ций и переменных, которая потом используется для трансляции во внутреннее представление. В этом случае -если файл отсуствует получим фатал еррор, и остановку дальнейшей обработки. Вся страница будет прервана после первого же отсутвующего файла в рекуайр. В итоге: какой то из методов дает выигрыш в производительности, кажись рекуайр - так как транслятору пхп быстрее обработать один файл и создать едину таблицу и внутренний код инструкций, чем переключаться между разными файлами и обрабатывать каждый по отдельности. Но так как сейчас сервера доведены до предела мощностей - выигрыш в долях секунды вряд ли будет заметен. Хотя можно поэкспериментировать сравнив время генерации страницы.
  13. проверка на кнопку - это верно, в случае если в будущем вдруг надо срочно сменить название на кнопке или name кнокпи - то попутно надо рыскать по пхп коду где все эти проверки. А скрытыми полями можно унифицировать все формы сайта, завести скажем серию констант, а потом подставлять их значения в скрытое поле action например. define("USER_REGISTER", 12); define("USER_LOGIN", 17); define("USER_OPTIONS", 24); а при создании формы ... echo ' ... .... ';
  14. не забывайте резать данные пришедшие от пользователя на чужеродные символы $str=eregi_replace('[^-a-z0-9]','',$_POST['user']); т.е. любой символ кроме тире, англ букв, и чифр вырезаем.
  15. да, птичка это выход. Кстати как насчет того чтобы разработать максимально трудный для взлома и компроментации алгоритм авторизации? HTTPS не в счет, а такую авторизацию которую можно и новичку и профи сделать вручную на пхп.
  16. А зачем в базу-то? не проще ли в саму сессию писать IP? а потом сравнивать $_SERVER['REMOTE_ADDR'] и $_SESSION['REMOTE_ADDR'] (внесенный туда при первой авторизации). имхо, разница в безопасности этих двух подходов не очень велика, потому зачем грузить мускул неррациональной задачей? может конечно база нужна в данном случае не только чтоб получать только IP и часть сессии, но и еще к-л информацию, но этого hummermania не указал А как насчет ситуации когда я сел за комп в общественном месте, авторизовался в защищенную часть сайта, и потом закрыл страницу, не закрывая браузер! Что получится. В его кукисах до самого закрытия для этого хоста будет храниться SESSID, набрав адрес хоста можно легко и просто попасть в защищеную часть сайта. Возможна ли такая ситуация? Конечно. А если в табле с юзверами храниться и время, когда последний раз запрашивалсь страничка любая, из защищенной части сайта. И при каждом вызове это время обновлять. Причем обновлять в случае когда время последнего захода не превысило определенный таймаут. Т.е. если я авторизованный пользователь. Для меня в сессиях храниться мой ИП, логин. А в табле в строке с моей учеткой дополнительно еще и время полсденей запрошенной страницы, еще раз ИП, часть сессИД. если я отошел оставив открытой страничку с админкой - то при попытке обновить старницу скрипт увидит что время последнего обнолвения превысило скажем 3-5 минут. вроде бы юзверь тот же, но а вдруг не тот же. Интервал превышен - в табле сбрасываю ИП, сессИД, время. А последующие строки проверок увидят что с этого адреса никто не авторизовывался! и всю процедуру можно начинать заново. Может немножко неудобно для модераторов - но безопасность превыше всего!
  17. www.business-pmr.com Бизнес-справочник предпринимателей и бизнесменов Приднестровья. Плюс бесплатные объявления. Прошу оценить верстку, общий дизайн, и юзабилити - в плане навигации, добавления обьявлений, сообщений в гостевой. И если возможно такое - проанализировать на взлом ))) SQL инъекции, дефейс и че там еще хацкеры придумывают.
  18. бордер у таблы = 0 и вставляем картинки со скругленными краями - и всем хорошо.
  19. а кто заметил что картинка налезает на панель инструментов фаерфокса? думаю никакие ухищрения и коды не сделают так чтобы картинка легла поверх браузера. Или пишите плагин на C++ или Дельфи для браузера - тогда по эркану можно и бегающих кошек понапускать... )))
  20. а обычная проверка на валидность ЦСС разве не помогает?
  21. Кажись на форуме уже проскакивала эта тема и ктось любезно подкинул ссылку про мод-реврайт http://sitemaker.ru/technologies/webserver/mod_rewrite/
  22. пишите сайт с нуля - там можно сделать все что заблагорассудится
  23. буферизация вывода може помочь. при вызове сешин-старт что происходит? в недрах апача на вебсервере в недоступной для внешнего мира папке создается файл с именем session_сессионИД - если я верно помню. а внего толкаются переменные при вызовах сешин-регистер. А кроме того пхп готовит отослать Header для этого файла. А хедер не отсылается если был вывод.
  24. точнее if(isset($_post['check']) AND $_post['check']=='check_form')
  25. я бы добавил в форму скрытое поле а в пхп скрипте проверял бы его. Тогда уж точно форма была отправлена. а в скрипте if(isset($_post['check']) AND $_post['check']=='check') { работаем дальше....
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy