X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Ссылки
Валериан
Валериан
Topic Starter сообщение 11.6.2010, 17:43; Ответить: Валериан
Сообщение #1


Как добиться такого отображения ссылок в PHP. http://domain.com/site
Например на сайте ВКонтакте можно так http://vkontakte.ru/profile.php?id=1 (Это понятно как), а можно и так http://vkontakte.ru/id1
Вот как добиться второму способу? Объясните принцип. Спасибо.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZhukV
ZhukV
сообщение 11.6.2010, 17:49; Ответить: ZhukV
Сообщение #2


Использовать ЧПУ.
Вот некий пример:
Файл .htaccess
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]

После этого у тебя всегда будет запускаться только index.php который лежит в одном каталоге вместе с .htaccess
А теперь в файлике index.php нипишы:
[PHP]
print_r($_GET["page"]);
[/PHP]
Поексперементируй с адресной строкой, и сразу увидиш, как оно работает.



Есть готовый класс для работы с ЧПУ. (Слаживал сам, для своих сайтов):
[PHP]
class CHPU{
private $CHPU_ARRAY = array("PAGE","TYPE","FILE");
private $INDEX_FILE = array("FILE" => "index", "FORMAT" => "html", "TYPE" => "KEYS", "DEFAULT" => "index.html");
private $IS_CYR = true;
private $FORMAT = "";
private $NAME_GET = "page";
public $SEPARATOR_VALUE = array("-","оголошення_", "новини_", "пошук_");
public $PAGE = array();
public $VALUE = "";
public $URL = "";

/*--------------------------------------------------
Функция перекодирования параметра URL
*--------------------------------------------------*/
private function CYR($text = "", $convert = "cyr"){
if($this -> IS_CYR){
if(!function_exists("strToCyrilic")){
trigger_error("Отсутсвует функция перекодирования URL.", E_USER_ERROR);
} else { return strToCyrilic($text, $convert); }
}else{ return $text; }
}
/*--------------------------------------------------
Функция генерации массива страницы
--------------------------------------------------*/
private function CreatePAGE($P = ""){
if(!$P){ $PAGE = $_GET[$this -> NAME_GET]; }else{ $PAGE = $P; }
if(!$PAGE){ $this -> PAGE = array("FILE" => $this -> INDEX_FILE); return $this -> PAGE; }
$RT = explode("/",$PAGE);

$PATTERN = '/^';
$PATTERN .= is_array($this -> SEPARATOR_VALUE) ? "(" . @implode("|", $this -> SEPARATOR_VALUE) . ")" : $this -> SEPARATOR_VALUE;
$PATTERN .= '/';

for($i = 0; $i < count($RT); $i++){
$F = explode(".",$RT[$i]);
$TYPE = preg_match($PATTERN, $RT[$i], $S);
$SEP = $S[1];
if($F[1]){
$MODE = array("-","_");
$RESULT["FILE"] = array (
"FILE" => $SEP ? $this -> CYR(str_replace($MODE, "", $SEP)) : $this -> CYR($F[0]),
"FORMAT" => $F[1],
"TYPE" => $TYPE ? "VALUE" : "KEY",
"DEFAULT" => $RT[$i],
"VALUE" => str_replace($SEP, "", $F[0])
);
} else { $RESULT[$this -> CHPU_ARRAY[$i]] = $this -> CYR($RT[$i]); }
}
$RESULT["FILE"] = $RESULT["FILE"] ? $RESULT["FILE"] : $this -> INDEX_FILE;
DeleteElementArray($RESULT,"","NULL");
$this -> PAGE = $RESULT;
$this -> FORMAT = $RESULT["FILE"]["FORMAT"];
$this -> VALUE = $RESULT["FILE"]["VALUE"];
return $this -> PAGE;
}
/*--------------------------------------------------
####################################################
####################################################
--------------------------------------------------*/
public function getNameGET(){ return $this -> NAME_GET; }
/*------------------------------------------------*/
public function getFormat(){
$PAGE = $_GET[$this -> NAME_GET];
$TEMP = explode("/", $PAGE);
$TEMP = explode(".", $TEMP[count($TEMP) - 1]);
return $TEMP[1] ? $TEMP[1] : $this -> INDEX_FILE["FORMAT"];
}
/*------------------------------------------------*/
public function getPage(){ return $this -> PAGE; }
/*------------------------------------------------*/
public function setPage($P = ""){ return $this -> CreatePAGE($P); }
/*------------------------------------------------*/
public function getURL($DOMEN = true){
$RESULT = $DOMEN == true ? "http://" . $_SERVER["HTTP_HOST"] . "/" : "";
$RESULT .= $_GET[$this -> NAME_GET];
$RESULT = $RESULT ? $RESULT : "Отсутвует";
return $RESULT;
}
/*------------------------------------------------*/
public function setSeparatorValue($VALUE = ""){
if($VALUE){ $this -> SEPARATOR_VALUE[] = $VALUE; }
}
/*--------------------------------------------------
Гененрирует ссылку в формате HTML тега, параметра HREF
--------------------------------------------------*/
public function CreateHrefA($T = array(), $TYPE = "HREF"){
$URL = _DOMEN;
if($T["PAGE"]){ $URL .= $T["PAGE"] . "/"; }
if($T["TYPE"]){ $URL .= $T["TYPE"] . "/"; }
if($T["FILE"]){ $URL .= $T["FILE"]; }
if($TYPE == "HREF")return $URL;
elseif($TYPE = "A") return "<a href=\"{$URL}\">{$URL}</a>";
}

/*--------------------------------------------------
####################################################
####################################################
--------------------------------------------------*/
function __construct($START = false){
if($START === true){ $this -> CreatePAGE(); }
}
/*------------------------------------------------*/
function __toString($DOMEN){ return $this -> getURL; }
/*------------------------------------------------*/
}
[/PHP]

В нем все очень порстенько. Сразу есть функции для создания таких ссылок.
Сразу прошу принять к вниманию переменную SEPARATOR_VALUE
Вот как оно делается.
Если при файле находится хотя бы один сепаратор, который определен в массиве, дефоулт файл пойдет на индекс, и создается переменная, в которой имеется значение.
ИСПОЛЬЗУЯ КЛАСС МОЖНА СПОКОЙНО ИСПОЛЬЗОВАТЬ КИРИЛИЦУ
http://domen.ru/пошук/розширений.html
Можна в нем много чего експерементировать.
УДАЧИ.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZhukV
ZhukV
сообщение 11.6.2010, 17:51; Ответить: ZhukV
Сообщение #3


А кстати, забыл функцию прикрепить:
ОНИ ЕСТЬ ОБЕЗАТЕЛЬНЫМИ!!!
[PHP]
/*---------------------------------------------------------
Функция удаления елементов массива
Входящий параметр, массив, имеет жесткую ссылку
---------------------------------------------------------*/
function DeleteElementArray(&$array,$val,$type="key"){
if(!is_array($array))return false;
$t["key"]=array_keys($array);$t["value"]=array_values($array);
$r["key"]=array();$r["value"]=array();
for($i=0;$i<count($array);$i++){
if($type=="key"){
if($t["key"][$i]!==$val){ $r["key"][] = $t["key"][$i]; $r["value"][] = $array[$t["key"][$i]]; }
} else if($type=="NULL"){
if(!empty($t["value"][$i])){ $r["key"][] = $t["key"][$i]; $r["value"][] = $array[$t["key"][$i]]; }
} else if($type=="val"){
if($t["value"][$i]!==$val){ $r["key"][] = $t["key"][$i]; $r["value"][] = $array[$t["key"][$i]]; }
}
}
if($r["key"] && $r["value"]){ return $array = @array_combine($r["key"],$r["value"]); }
}

/*---------------------------------------------------------
Функция перекодирования строки из кирилицы в латиницу и
наоборот
---------------------------------------------------------*/
function strToCyrilic($text = "", $convert = "cyr"){
$STR_ARRAY = array("а"=>"a","б"=>"b","в"=>"v","г"=>"h","д"=>"d","е"=>"e","є"=>"ye","ж"=>"zh","и"=>"u","і"=>"i","з"=>"z","к"=>"k","л"=>"l","м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r","с"=>"s","т"=>"t","у"=>"y","ф"=>"ph","х"=>"h","ц"=>"tc","ч"=>"ch","ш"=>"sh","щ"=>"sh","ь"=>"","ю"=>"yu","я"=>"ya","э"=>"e","ы"=>"u","ъ"=>"");
$convert = strtoupper($convert);
$K["RUS"] = array_keys($STR_ARRAY);
$K["CYR"] = array_values($STR_ARRAY);
if($convert == "CYR"){
return str_replace($K["RUS"],$K["CYR"],$text);
} else if($convert == "RUS"){
return str_replace($K["CYR"],$K["RUS"],$text);
}
}
[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Валериан
Валериан
Topic Starter сообщение 11.6.2010, 18:01; Ответить: Валериан
Сообщение #4


Спасибо огромное!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Валериан
Валериан
Topic Starter сообщение 11.6.2010, 19:14; Ответить: Валериан
Сообщение #5


ой. Сделал все, как вы сказали из первого способа, все нормально, а картинка из базы не грузится. Сравните: http://titanic-in-color.com/english/olympic/id2
и
http://titanic-in-color.com/english/olympi...mments.php?id=2
Что делать? :niasilil:
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZhukV
ZhukV
сообщение 14.6.2010, 9:42; Ответить: ZhukV
Сообщение #6


Вот здесь и действительно загорстка.
В любом случае открывается файл в корне index.php
Оброботчик нужно вешать в этом файлике, либо порверять по скрытым полям и инклюдить определенные файлы.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Ссылки за которые не стыдно! Качественный линк билдинг сервис под Бурж от Westrank. Честный прайс.
63 DaoDog 47043 Сегодня, 12:05
автор: Omaxis
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыКрауд ссылки с форумов, блогов, порталов. Жирные ссылки с Ua,Ru, Бурж площадок. Вечные ссылки в статьях на собственных сайтах
Быстро, качественно и ответственно!
138 vetalbon 66417 13.4.2024, 17:53
автор: vetalbon
Открытая тема (нет новых ответов) SEO Линк Билдинг под Бурж | Вечные ссылки США, Европа и Мир с Гарантией
20 Needmylink1 7000 12.4.2024, 23:32
автор: Needmylink1
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыВечные ссылки с трастовых сайтов
53 1informer 22672 7.4.2024, 13:47
автор: 1informer
Открытая тема (нет новых ответов) Оптом и в розницу, скупаю ссылки околомедицинской тематики.
3 kasey7 2015 4.4.2024, 19:12
автор: kasey7


 



RSS Текстовая версия Сейчас: 19.4.2024, 17:09
Дизайн