Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: мультиязычный сайт
 
 автор: nepalets   (07.05.2011 в 21:09)   письмо автору
 
 

Здравствуйте.

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

1. Хочется, чтобы сайт загружался по адресу типа http://mysite без никаких больше добавок. Это так и получается, если все начинается со страницы index.html, которая лежит в корне. Но мне кажется, что для моих целей туда надо положить index.php . На своей машине через Денвер попробовал - запускает все нормально. Будет ли это работать в большом интернете? Не хотелось бы, чтобы адрес сайта был типа http://mysite/index.php .

2. Мультиязычность.
По этой теме я прочел:
форум php, тема: Сайт на 2-х языках, ак реализовать?
форум php, тема: Многоязычное сопровождение сайта
статью СУПЕРГЛОБАЛЬНЫЙ МАССИВ $_SERVER
Реализацию мультиязычности представляю себе так:
index.pxp принимает переменную $_SERVER['HTTP_ACCEPT_LANGUAGE'] . Если находит английский язык первым в списке - загружает английский вариант. Если находит какой-либо из доступных - загружает вариант этого языка. Если ничего не находит - загружает английский вариант. Во всех вариантах пользователь может по ссылке перейти на любой доступный язык.
Что не получается.
Чтобы посмотреть, как я смогу работать с суперглобальным массивом, я создал страницы с кодом, как описано в статье <СУПЕРГЛОБАЛЬНЫЙ МАССИВ $_SERVER> в разделе <Элемент $_SERVER['HTTP_REFERER']>, а именно:
страница index.php с кодом:
<?php 
  
echo "<a href=page.php>Ссылка на страницу PHP</a><br />"
  echo 
"Содержимое $_SERVER['HTTP_REFERER'] - "
        
$_SERVER['HTTP_REFERER'
?>

и страница page.php с кодом:
<?php 
  
echo "<a href=index.php>Ссылка на страницу PHP</a><br />"
  echo 
"Содержимое $_SERVER['HTTP_REFERER'] - "
        
$_SERVER['HTTP_REFERER'
?>

т.е. сделал то, что прописано в статье, полагая позже заменить на нужный мне элемент суперглобального массива. Но результатом на запуск страницы index.php было сообщение:
<Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in Z:\home\expansomat\www\index.php on line 3>.
Подскажите, пожалуйста, почему возникает такая ошибка и что надо сделать.
Работоспособна ли такая идея?

3. Следующие вопросы возникли по мере написания письма.
Каким образом страница index.php загрузит нужный вариант? Через редирект? Как это воспримут поисковики? Что следует сделать, чтобы все было хорошо?

Буду благодарен за помощь.

  Ответить  
 
 автор: Z3RO   (07.05.2011 в 21:34)   письмо автору
 
   для: nepalets   (07.05.2011 в 21:09)
 

1. Сайт и так доступен без пути к индексному файлу, тоесть
http://site.ru/index.php равноценно http://site.ru, а
http://site.ru/cat/index.php равноценно http://site.ru/cat.
Тоесть `index.php` можешь никогда не указывать, это не обязательно.
2. В обеих кодах ты не поставил точку с запятой.
3. Ничего не надо делать. Поисковики на это не обратят внимания.

  Ответить  
 
 автор: nepalets   (08.05.2011 в 00:02)   письмо автору
 
   для: Z3RO   (07.05.2011 в 21:34)
 

Спасибо!
Но...

>2. В обеих кодах ты не поставил точку с запятой.

Точка с запятой стоит; и в тексте страниц, и в коде, который я показал в вопросе; она разделает операторы echo. Или я чего-то не понимаю?

  Ответить  
 
 автор: sl1p   (08.05.2011 в 00:19)   письмо автору
 
   для: nepalets   (08.05.2011 в 00:02)
 

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

  Ответить  
 
 автор: Z3RO   (08.05.2011 в 00:26)   письмо автору
 
   для: sl1p   (08.05.2011 в 00:19)
 

Обязательно

  Ответить  
 
 автор: Z3RO   (08.05.2011 в 00:27)   письмо автору
 
   для: nepalets   (07.05.2011 в 21:09)
 

Вот так перепишите первый код

echo "<a href=page.php>Ссылка на страницу PHP</a><br />";  
  echo "Содержимое $_SERVER['HTTP_REFERER'] - ".  
        $_SERVER['HTTP_REFERER'];

А так второй:

echo "<a href=index.php>Ссылка на страницу PHP</a><br />";  
  echo "Содержимое $_SERVER['HTTP_REFERER'] - ".  
        $_SERVER['HTTP_REFERER'];

  Ответить  
 
 автор: sl1p   (08.05.2011 в 00:45)   письмо автору
 
   для: Z3RO   (08.05.2011 в 00:27)
 

таки да, это не обязательно когда одна строка кода между тегами, перепутал.

  Ответить  
 
 автор: nepalets   (08.05.2011 в 00:57)   письмо автору
 
   для: Z3RO   (08.05.2011 в 00:27)
 

Переписал. Перезагрузил машину. Результат тот же - syntax error и т.д.
Т.е. в коде синтаксическая ошибка? Странно. Ведь код взят со статьи здесь на сайте.
И на что он ругается, не пойму - на верхний регистр, или кавычки, или пробелы? Или у меня что-то не установлено?
Ребята, а у вас этот код срабатывал?

  Ответить  
 
 автор: nepalets   (08.05.2011 в 01:18)   письмо автору
 
   для: nepalets   (08.05.2011 в 00:57)
 

Теперь сработало. Таким путем -
  echo "<a href=page.php>Ссылка на страницу PHP</a><br />"; 
  echo 'Содержимое $_SERVER[HTTP_REFERER] - '.
        $_SERVER['HTTP_REFERER'];

т.е. убрал одиночные кавычки из глобального массива и строку для печати заключил в одиночные кавычки вместо двойных. Кстати, без последних точки с запятой тоже работает.
Ну что ж, завтра (уже сегодня) будем посмотреть, как реализуется идея мультиязычности.

Z3RO и sl1p - СПАСИБО!

  Ответить  
 
 автор: Z3RO   (08.05.2011 в 09:51)   письмо автору
 
   для: nepalets   (08.05.2011 в 01:18)
 

Я и забыл насчет кавычек. Можна написать и с кавычками, экранируя их


echo "<a href=page.php>Ссылка на страницу PHP</a><br />";  
  echo 'Содержимое $_SERVER[\'HTTP_REFERER\'] - '. 
        $_SERVER['HTTP_REFERER'];

  Ответить  
 
 автор: nepalets   (08.05.2011 в 11:31)   письмо автору
 
   для: Z3RO   (08.05.2011 в 09:51)
 

Спасибо.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования