Несколько сложных вопросов Php

Тема в разделе "PHP программирование", создана пользователем Satell, 14 сен 2007.

  1. Satell

    Satell Гость

    1. Написать php-функцию, определяющую, существует ли введенный посетителем email-адрес в действительности. Критичными являются: время ожидания ответа, достоверность ответа.

    2. Написать php-скрипт, который бы выводил собственный код.

    3. На сайте с фотогалереей нужно создавать маленькие превьюшки.
    Вот код, создающий из JPG-картинки превьюшку размером 100x100 точек:

    function create_thumbnail($photo, $thumb){
    $im = imagecreatefromjpeg($photo);
    $im2 = imagecreate(100, 100);
    imagecopyresized(
    $im2, $im, 0, 0, 0, 0,
    100, 100, imagesx($im), imagesy($im)
    );
    imagejpeg($im2, $thumb, 80);
    }

    Однако полевые испытания убеждают нас, что качество получаемой превьюшки довольно низко (можете сами попробовать). Как можно улучшить функцию?
    После исправления у нас могли возникнуть проблемы с быстродействием. Какие решения вы можете предложить?

    4. Нужно вывести форму в которой пользователь вводит некую кл. фразу и следующий текст: "В кл. фразе Вы можете использовать специальные символы: '*' - заменяет любую комбинацию символов; '?' - заменяет один символ. Таким образом на слово 'газ*' найдется 'газ', 'газета', 'газированный' и т.д. на 'баннер?' - 'баннера', 'баннеру', но не 'баннер' и 'баннерный'." После отправки формы нужно найти и вывести все записи из таблицы с 1 текстовым полем, содержащие кл. фразу по вышеописанному алгоритму.

    DHTML

    5. Вывести "n" объектов (например картинок), которые бы можно было передвигать по экрану с помощью мышки. Страница при это не должна обновляться. Приветствуется, если это будет работать в браузерах IE c 5.0 и выше, firefox c 1.5 и выше, Opera c 7.5 и выше
    6. Предложить вариант DHTML-дерева, работающего в IE5 и выше, Netscape6 и выше, firefox c 1.5 и выше, Opera c 7.5 и выше. Узлы должны раскрываться без обновления окна браузера.


    APACHE. Авторизация и безопасность.

    7. Скрипту авторизации из формы с полями login и password приходят авторизационные данные. В MySQL в таблице users хранятся числовые id, логины и пароли пользователей. После удачного входа в сессию записывается переменная autorized, истинность которой потом проверяют другие скрипты.

    $login = $_REQUEST['login'];
    $password = $_REQUEST['password'];
    $res = mysql_query('SELECT id FROM users
    WHERE login="'.$login.'" AND password="'.$password.'"');
    list($user_id) = mysql_fetch_array($res);
    session_start();
    $_SESSION['authorized'] = isset($user_id);

    Есть ли в приведенном скрипте и в самом способе авторизации какие-либо проблемы с безопасностью?

    8. Имеется php скрипт, выводящий значения GET переменныx var1, var2 и var3 из строки запроса. Необходимо настроить апач таким образом, чтобы при вводе в строку запроса index-var1-<значение>-var2-<значение>-var3-<значение>.htm, запускался этот скрипт и выводил указанные значения. Изпользовать директивы модуля mod_rewrite и файл .htaccess.
     
  2. MajestiC

    MajestiC Гость

    Ага, ща кто-то за тебя будет выполнять тестовые задания о приеме на работу =)
    Давай ты лучше поучишь пхп прежде чем суваться делать сайты за деньги.
     
  3. Satell

    Satell Гость

    спасибо, спасибо!
    как модифицировать этот скрипт, чтобы он был безопасный?

    $login = $_REQUEST['login'];
    $password = $_REQUEST['password'];
    $res = mysql_query('SELECT id FROM users
    WHERE login="'.$login.'" AND password="'.$password.'"');
    list($user_id) = mysql_fetch_array($res);
    session_start();
    $_SESSION['authorized'] = isset($user_id);

    Напишите плиз этот скрипт, ато я чето не понимаю:
    Нужно вывести форму в которой пользователь вводит некую кл. фразу и следующий текст: "В кл. фразе Вы можете использовать специальные символы: '*' - заменяет любую комбинацию символов; '?' - заменяет один символ. Таким образом на слово 'газ*' найдется 'газ', 'газета', 'газированный' и т.д. на 'баннер?' - 'баннера', 'баннеру', но не 'баннер' и 'баннерный'." После отправки формы нужно найти и вывести все записи из таблицы с 1 текстовым полем, содержащие кл. фразу по вышеописанному алгоритму.
     
  4. MajestiC

    MajestiC Гость

    Тебе еще нужно и SQL поучить =)
    Насчет масок копай в сторону MySQL LIKE с % и _
    Насчет безопасности копай в сторону mysql_escape_string в подготовке sql запроса.

    PS. Ты бы знал как решить эти задачи, если бы реально разрабатывал до этого сайты. Эти задачи среднего уровня для тестового задания. Кроме 2-ой, которая по сути идиотская (в реальных случаях ей нет применения), но я встречал в инете по-моему 2 реализации.
     
  5. Andrew Stephanoff

    Andrew Stephanoff Гость

    Для: MajestiC
    не LIKE, а MATCH(...) AGAINST(... IN BOOLEAN MODE)
    лучше использовать не mysql_escape_string(), а mysql_real_escape_string()
     
  6. MajestiC

    MajestiC Гость

    Для: Andrew Stephanoff
    И как же реализовать "'?' - заменяет один символ" c MATCH?

    Согласен, написал свой вариант только для того, что бы не было вопросов, если экранирование происходит до коннекта к базе.

    Для: Satell
    Кстати, совсем забыл. Еще советую почитать про magic_quotes_gpc и register_globals, но только для того что бы отключить эти функции и не использовать =)
     
  7. Andrew Stephanoff

    Andrew Stephanoff Гость

    Для: MajestiC можно использовать wildcard - *, к тому же FULLTEXT ищет с использованием индекса, а LIKE - нет.
     
  8. MajestiC

    MajestiC Гость

    Для: Andrew Stephanoff
    Быть может я ошибаюсь, но я не вижу возможности с помощью замены ? на * выполнить условие: "на 'баннер?' - 'баннера', 'баннеру', но не 'баннер' и 'баннерный'."
    Есть варианты?

    Само условие:
    PS. Мы не обсуждаем скорость и т.д, нужен способ который будет выполнять все условия.
    PPS. Судя по примерам вообще можно предположить что каждая запись является 1 словом =)
     
  9. Satell

    Satell Гость

    на сервере лежит файл, шелла нет, файл с логами в панеле управления за 18 часов только, как можно сделать счётчик сколько раз его запрашивают броузеры?
     
  10. aka_Kail

    aka_Kail Гость

    $login = $_REQUEST['login'];
    $password = $_REQUEST['password'];
    $res = mysql_query('SELECT id FROM users
    WHERE login="'.$login.'" AND password="'.$password.'"');
    list($user_id) = mysql_fetch_array($res);
    session_start();
    $_SESSION['authorized'] = isset($user_id);

    Мдаааа... тут целые ворота для начинающего хакера...

    если переменные не проверяются.. А они не проверяются, :huh:

    представь, я ввёл заместо имени uzer это:
    uzer' OR 1='1/*
    И твой SOL-запрос стал таким...
    'SELECT id FROM users WHERE login='uzer' OR 1='1'"
    так и админ доступ можно :huh:

    Сходи на античат , там поучись безопасности.. на примерах взлома...


    а про предвиеву - замени imagecopyresized на imagecopyresampled
    Эта ф-ция работает намного лучще.
     
Загрузка...
Похожие Темы - Несколько сложных вопросов
  1. lionk
    Ответов:
    8
    Просмотров:
    153
  2. mrktwn1
    Ответов:
    0
    Просмотров:
    69
  3. M1shop
    Ответов:
    0
    Просмотров:
    370
  4. lionk
    Ответов:
    1
    Просмотров:
    593
  5. JohnLemon
    Ответов:
    6
    Просмотров:
    1.175

Поделиться этой страницей