PDA

Просмотр полной версии : Несколько сложных задач php


Satell
14.09.2007, 19:13
Посоветуйте пожалуйста в каком направлении копать или код

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.

Ch3ck
14.09.2007, 19:23
Уж про валидность стыдно спрашивать:
http://www.codenet.ru/webmast/php/phpfaq.php#2_2
А вообще тут http://www.softtime.ru/forum/
спроси. Весь фору посвящён тематике PHP. Обязательно ответют.

blaga
15.09.2007, 06:03
Насчет пункта 3 где про превьюшки картинок. Лично я на своем сайте использую вот такую функцию.

function resize($inputFilename,$dob_name_image)
{
$imagedata = getimagesize($inputFilename);
$w = $imagedata[0];
$h = $imagedata[1];
$new_w = 138; // тут ширина картинки
$new_h = $h*$new_w/$w;
$im2 = ImageCreateTrueColor($new_w, $new_h);
$image = ImageCreateFromJpeg($inputFilename);
imagecopyResampled ($im2, $image, 0, 0, 0, 0, $new_w, $new_h, $imagedata[0], $imagedata[1]);
imagejpeg($im2,"[путь до маленькой]"); // тут надо вписать путь куда картинку сохранять
}

Вызывать функцию вот так:
resize("[путь до большой картинки]"",$name_image);
У меня все нормально работает...

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

$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 текстовым полем, содержащие кл. фразу по вышеописанному алгоритму.

madnet
17.09.2007, 11:43
Satell, для безопасности скрипта тебе надо во-первых экранировать кавычки, а во-вторых, проверку авторизации делать не по
list($user_id) = mysql_fetch_array($res);
$_SESSION['authorized'] = isset($user_id);

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

censored!
18.09.2007, 14:46
Насчет пункта 3 где про превьюшки картинок
Качество было плохое так как для джпега надо выставить ImageCreateTrueColor и уменьшать со сглаживанием -> imagecopyResampled, а не imagecopyresized
Ну и в imagejpeg($im2, $thumb, 80); вместо 80 качество 100 поставить (правда изображения будут много весить).
В самом конце обязательно надо:
imagedestroy($im);
imagedestroy($im2);

После исправления у нас могли возникнуть проблемы с быстродействием
Чтобы они не возникли, надо привьюшки создавать сразу же при закачивании изображения, а не при каждом обращении к нему.

По восьмому:
RewriteEngine on
RewriteRule ^index-var1-(.*)-var2-(.*)-var3-(.*).htm$ index.php?var=$1&var2=$2&var3=$3 [QSA,L]

А вообще — madnet прав.

blaga
18.09.2007, 16:50
2censored!, ты мне писал про картинки? У меня с качаством все нормально. И весят они мало.

Dr.Frank
18.09.2007, 19:08
насчет пункта 2:
http://ru.wikipedia.org/wiki/Куайн_(программирование)

Satell
18.09.2007, 22:28
на сервере лежит файл, шелла нет, файл с логами в панеле управления за 18 часов только, как можно сделать счётчик сколько раз его запрашивают броузеры?

nerezus
18.09.2007, 22:39
1) попросить отправить ответ.
2) eval в помощь
3) imagemagick
4) можно просто сделать парсер, а можно поглумицо с LIKE )
5,6) при чем тут пхп?
7) есть, inj
8) в вопросе есть ответ

blackybr
18.09.2007, 22:56
7 - как вариант написать небольшую ф-ию, прегматчующую входимые еперменные ну или реплейсить опеределенные спец слова. вообще вариантов не много., а дохмного.. ) афтор видимо не пытался искать ничего по этой теме

8 - https://forum.antichat.ru/thread27498-mod+rewrite.html

madnet
19.09.2007, 10:39
Так, уже дали ответы на все вопросы несколько раз.
Зачем повторять каждому?
Закрыто.