Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24386
Награды: Нет
|
Добавлено: Пн Сен 17, 2012 10:41 am Заголовок сообщения: facegenetic.com |
|
|
http://facegenetic.com/
Начнем-с.
С чего начнем-с? С ЧПУ начнем-с.
.htaccess
Код: | AddDefaultCharset UTF-8
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]
RewriteCond %{HTTP_HOST} !^facegenetic.com [NC]
RewriteRule ^(.*) http://facegenetic.com/$1 [L,R=301] |
Теперь все запросы передаются в скрипт index.php
В котором будем формировать массив:
Код: | $uri=explode("/", $_SERVER['REQUEST_URI']); |
$uri[1] - брови
$uri[2] - глаза
и т.д.
Вот думаю, ООПшничать, или на одних функциях все сделать?
Теперь надо проверить массив $uri чтобы он был валидным и сформировать страничку с фотороботом. |
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24386
Награды: Нет
|
Добавлено: Пн Сен 17, 2012 10:58 am Заголовок сообщения: |
|
|
Редирект www корявый получился. Исправляем:
Код: | AddDefaultCharset UTF-8
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.*/[^/\.]+)$
RewriteRule ^(.*)$ http://facegenetic.com/$1/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L] |
|
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24386
Награды: Нет
|
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24386
Награды: Нет
|
Добавлено: Пн Сен 17, 2012 1:20 pm Заголовок сообщения: |
|
|
Ладно. Для нас важнее www-редирект. Слеши, если понадобится, потом в хедере приделаю.
genotype.php:
Код: | <?php
$genotype=array(
1=>array("eyebrows", 31),
2=>array("eyes", 21),
3=>array("hair", 66),
4=>array("head", 8),
5=>array("jaw", 28),
6=>array("mouth", 50),
7=>array("nose", 37)
);
?> |
Это будет файлик с генотипом, через который будем проверять ЧПУ, и который будем использовать для генерации популяции.
index.php:
Код: | require_once("genotype.php");
function check_url($genotype, $uri){
if((count($uri)==9)&&($uri[8]=="")||(count($uri)==8)&&($uri[7]!="")){
for($i=1;$i<8;$i++){
if(
($uri[$i]=="")||
($uri[$i]!=(string)(int)$uri[$i])||
(!isset($genotype[$i][1]))||
($genotype[$i][1]<$uri[$i])||
((int)$uri[$i]<0)
) return false;
}
}else{
return false;
}
return true;
}
$uri=explode("/", $_SERVER['REQUEST_URI']);
if(check_url($genotype, $uri)){
pre($uri, "uri");
pre($genotype, "Генотип");
}else{
header('HTTP/1.1 404 Not Found');
include($_SERVER['DOCUMENT_ROOT'].'/404.php');
}
|
Разбиваем наш REQUEST_URI, проверяем, есть ли такие значения в $genotype. Если есть - url валидный, если нет - вываливаем 404 ошибку
404.php
Код: | <?
header('HTTP/1.1 404 Not Found');
header('Status: 404 Not Found');
?> |
|
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24386
Награды: Нет
|
Добавлено: Пн Сен 17, 2012 1:33 pm Заголовок сообщения: |
|
|
Размышляем.
Сейчас мы формируем странички с фотороботами, параметры которого переданы в uri. Ответ на Ajax-запрос (get) будет формироваться тем-же принципом. Стало быть проверка валидности uri никуда не годится.
Надо через ассоциативные массивы делать, чтобы не лепить вторую функцию проверки для массива $_GET |
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24386
Награды: Нет
|
Добавлено: Пн Сен 17, 2012 1:49 pm Заголовок сообщения: |
|
|
Переделываем.
genotype.php:
Код: | <?php
$genotype=array(
"eyebrows"=>31,
"eyes"=>21,
"hair"=>66,
"head"=>8,
"jaw"=>28,
"mouth"=>50,
"nose"=>37
);
?> |
index.php:
Код: | <?php
session_start();
require_once("genotype.php");
function count_url($array){
if(!((count($array)==9)&&($array[8]=="")||(count($array)==8)&&($array[7]!="")))
return false;
return true;
}
function check_uri($genotype, $uri){
foreach($uri as $key=>$value)
if(((int)$value>(int)$genotype[$key])||($value!=(string)(int)$value)||($value=="")||((int)$value<0))
return false;
return true;
}
$array=explode("/", $_SERVER['REQUEST_URI']);
$uri=array(
"eyebrows"=>$array[1],
"eyes"=>$array[2],
"hair"=>$array[3],
"head"=>$array[4],
"jaw"=>$array[5],
"mouth"=>$array[6],
"nose"=>$array[7]
);
if(count_url($array)&&check_uri($genotype, $uri)){
echo "URL валидный";
}else{
header('HTTP/1.1 404 Not Found');
include($_SERVER['DOCUMENT_ROOT'].'/404.php');
}
?> |
|
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24386
Награды: Нет
|
Добавлено: Пн Сен 17, 2012 1:53 pm Заголовок сообщения: |
|
|
Admin писал(а): |
Код: | function check_uri($genotype, $uri){
foreach($uri as $key=>$value)
if(((int)$value>(int)$genotype[$key])||($value!=(string)(int)$value)||($value=="")||((int)$value<0))
return false;
return true;
} |
|
Перестрахуемся (мало ли что пользователь в Ajax-запросе передаст)
Код: | function check_uri($genotype, $uri){
foreach($uri as $key=>$value)
if(array_key_exists($key, $genotype))
if(((int)$value>(int)$genotype[$key])||($value!=(string)(int)$value)||($value=="")||((int)$value<0))
return false;
return true;
} |
|
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24386
Награды: Нет
|
Добавлено: Пн Сен 17, 2012 2:00 pm Заголовок сообщения: |
|
|
Код: | "GET /31/21/66/8/28/50/37/ HTTP/1.1" 200
"GET /31q/21/66/8/28/50/37/ HTTP/1.1" 404
"GET /31/q/21/66/8/28/50/37/ HTTP/1.1" 404
"GET /31/21/66/8/28/50/37/1 HTTP/1.1" 404
"GET //21/66/8/28/50/37/ HTTP/1.1" 404
"GET /0/21/66/8/28/50/37/ HTTP/1.1" 200 |
С ЧПУ разобрались.
Размышляем дальше.
Скрипт фактически будет состоять из трех частей.
Первая - формирует главную.
Вторая - формирует странички с ЧПУ и отдельными фотороботами.
Третья - формирует ответ на Ajax-запрос. |
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24386
Награды: Нет
|
Добавлено: Пн Сен 17, 2012 2:13 pm Заголовок сообщения: |
|
|
Последнюю зарплату забрал. Хули тут в офисе сидеть. Пойду домой. |
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24386
Награды: Нет
|
Добавлено: Пн Сен 17, 2012 5:10 pm Заголовок сообщения: |
|
|
Admin писал(а): | Ответ на Ajax-запрос (get) будет формироваться тем-же принципом. Стало быть проверка валидности uri никуда не годится.
Надо через ассоциативные массивы делать, чтобы не лепить вторую функцию проверки для массива $_GET |
Admin писал(а): |
Перестрахуемся (мало ли что пользователь в Ajax-запросе передаст)
|
Столько забавной хуйни нагородил. Там только radiobutton аяксом отправляется на сервер.
Ладно, переписывать обратно не буду. В принципе так тоже работает.
Так, получили массив $uri. Массив содержит номера гифок в соответствующих папках. Теперь лепим функцию, в которую передаем этот массив и получаем на выходе готовый фоторобот в блоках div. Стало быть, надо с CSS хорошенько поебаться
Идейнее было бы средствами php эти гифки клеить. Только хз как. |
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24386
Награды: Нет
|
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24386
Награды: Нет
|
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24386
Награды: Нет
|
Добавлено: Пн Сен 17, 2012 6:16 pm Заголовок сообщения: |
|
|
Код: | <?php
session_start();
require_once("genotype.php");
function count_url($array){
if(!((count($array)==9)&&($array[8]=="")||(count($array)==8)&&($array[7]!="")))
return false;
return true;
}
function check_uri($genotype, $uri){
foreach($uri as $key=>$value)
if(array_key_exists($key, $genotype))
if(((int)$value>(int)$genotype[$key])||($value!=(string)(int)$value)||($value=="")||((int)$value<0))
return false;
return true;
}
function create_face($array){
echo "На этой страничке формируем ебальник";
}
if(isset($_GET['ajax'])){
echo "Тут ответ на Ajax-запрос.";
}elseif(($_SERVER['REQUEST_URI']!="")&&($_SERVER['REQUEST_URI']!="/")){
$array=explode("/", $_SERVER['REQUEST_URI']);
$uri=array(
"eyebrows"=>$array[1],
"eyes"=>$array[2],
"hair"=>$array[3],
"head"=>$array[4],
"jaw"=>$array[5],
"mouth"=>$array[6],
"nose"=>$array[7]
);
if(count_url($array)&&check_uri($genotype, $uri)){
create_face($array);
}else{
header('HTTP/1.1 404 Not Found');
include($_SERVER['DOCUMENT_ROOT'].'/404.php');
}
}else{
echo "Отсюда будем отправлять Ajax-запрос.";
}
?> |
|
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24386
Награды: Нет
|
Добавлено: Вт Сен 18, 2012 10:06 am Заголовок сообщения: |
|
|
Пиздатые морды получаются
Надо подкорректировать те, которые совсем разлазятся |
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24386
Награды: Нет
|
Добавлено: Вт Сен 18, 2012 7:57 pm Заголовок сообщения: |
|
|
Рандомная морда:
http://facegenetic.com/?rand
С волосами что-то надо делать. Paintom их открыть не могу. Бля :( |
|
Вернуться к началу |
|
|
|