Список форумов Форум Форум
Форум
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   medals.phpНаграды   РегистрацияРегистрация 
 ПрофильПрофиль   СудокуСудоку   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

facegenetic.com
На страницу 1, 2, 3, 4  След.
 
Начать новую тему   Ответить на тему    Список форумов Форум -> Наука и технологии
Предыдущая тема :: Следующая тема  
Автор Сообщение
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

Награды: Нет

СообщениеДобавлено: Пн Сен 17, 2012 11:11 am    Заголовок сообщения: Ответить с цитатой

А ведь когда-нибудь я сяду и изучу этот ебучий модуль mod_rewrite.
Получился такой редирект:

http://www.facegenetic.com/ -> http://facegenetic.com/
http://www.facegenetic.com/test8 -> http://facegenetic.com/test8/
http://www.facegenetic.com/test8/ -> не редиректит

Хуй с ним. Двигаемся дальше, иначе на этот реврайте на весь день застряну.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
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

Награды: Нет

СообщениеДобавлено: Пн Сен 17, 2012 6:08 pm    Заголовок сообщения: Ответить с цитатой

Интересно, как поисковик отнесется к таким ссылкам http://facegenetic.com/1/1/1/1/1/1/1
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Rasty
Crackpot
цитировать



Репутация: +89/–10    

Зарегистрирован: 23.05.2006
Сообщения: 24386

Награды: Нет

СообщениеДобавлено: Пн Сен 17, 2012 6:11 pm    Заголовок сообщения: Ответить с цитатой

23 858 423 424 таких ссылки будет. В диапазоне http://facegenetic.com/0/0/0/0/0/0/0 - http://facegenetic.com/31/21/66/8/28/50/37

Если sap-y подключить - можно неплохо так заработать
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
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    Заголовок сообщения: Ответить с цитатой

Admin писал(а):
23 858 423 424 таких ссылки будет. В диапазоне http://facegenetic.com/0/0/0/0/0/0/0 - http://facegenetic.com/31/21/66/8/28/50/37

Если sap-y подключить - можно неплохо так заработать


Пиздатые морды получаются
Надо подкорректировать те, которые совсем разлазятся
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Rasty
Crackpot
цитировать



Репутация: +89/–10    

Зарегистрирован: 23.05.2006
Сообщения: 24386

Награды: Нет

СообщениеДобавлено: Вт Сен 18, 2012 7:57 pm    Заголовок сообщения: Ответить с цитатой

Рандомная морда:
http://facegenetic.com/?rand

С волосами что-то надо делать. Paintom их открыть не могу. Бля :(
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Имя
Сообщение

Смайлики
Дополнительные смайлики

 
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Форум -> Наука и технологии Часовой пояс: GMT
На страницу 1, 2, 3, 4  След.
Страница 1 из 4

 
Перейти:  
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB