код php на wml странице, настройки .htaccess

peresmeshnik

Новичок
код php на wml странице, настройки .htaccess

Здравствуйте!
Проблема заключается в следующем:
есть код:

<?
header("Content-type:text/vnd.wap.wml;");
echo "<?xml version=\"1.0\"?>" ;
?><!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">

<wml>
<card id="card1" title="My Wap Page">
<p>Hello world - this is my first wap card!</p>
<?php
$text="123";
print("PHP: $text");
?>
</card>
</wml>

есть файл .htaccess:

AddType application/x-httpd-php .wml .php
DirectoryIndex index.php
AddType text/vnd.wap.wml wml
AddType application/vnd.wap.wmlc wmlc
AddType text/vnd.wap.wmlscript wmls
AddType application/vnd.wap.wmlscriptc wmlsc
AddType image/vnd.wap.wbmp wbmp

в случае, если я сохраняю файл в *.php то все отлично работает в опере, но на телефоне появляется что "формат файла неизвестен" (что вполне логично), но если же я сохраняю файл в *.wml, то браузер начинает страшно ругаться на то, что "Ошибка анализа XML: синтаксическая ошибка (Строка: 1, Символ: 2)".
В поисках правды по этому вопросу я уже 3 дня (параллельно для себя уяснил еще много материала, т.к. занимаюсь этим впервые). Я смотрел темы на этом форуме по интересующему меня вопросу, но то, что я смог найти было либо неточным, либо ответ так и небыл сформулирован. Я также понимаю, что решение этого вопроса займет у специалиста минимум времени, поэтому я искренне прошу не отсылать меня в бобруйск, учить албанский и т.п.
Надеюсь на Вашу поддержку!
 

Mr_KOT

Новичок
Ошибок много в самом коде, htaccess тут непричем.
1. Указывать только *.php иначе просто работать не будет
2. Нужно указывать кодировку UTF-8
header("Content-type: text/vnd.wap.wml; charset=utf-8");
3. <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml"> записывай в echo "";
4. Почему ты текст PHP: 123 выводишь вне тэга <p></p>
5. Совет на будущее: проверяй валидатором страницы тобой написанные, если будет хоть 1 ошибка в тэгах, телефон не откроет такую страницу
 

peresmeshnik

Новичок
Спасибо за советы!!!
Вот в итоге код, который работает на телефоне (nokia 3220), в браузере Opera и M3Gate.
PHP:
<? 
    header("Content-type:text/vnd.wap.wml; charset=utf-8"); 
    echo "<?xml version=\"1.0\"?>"; 
?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml> 
<card id="card1" title="My Wap Page">  
<p>Hello world - this is my first wap card!</p>
<?php
$text="123";
print("<p>PHP: $text</p>");
?>
</card>  
</wml>
Если же я head пишу следующим образом:
PHP:
<? 
    header("Content-type:text/vnd.wap.wml; charset=utf-8"); 
    echo "<?xml version=\"1.0\"?>"; 
    echo "<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">";
?>
то опера говорит, что: "Parse error: syntax error, unexpected ';' in /home/vodorod/public_html/wap/index.php on line 5"
 

Mr_KOT

Новичок
Если работает это хорошо, проверь валидатором. В принципе
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> можно и не писать в echo ))) А так на будущее ковычки чтобы отображались как ковычки делаеться так \"

-~{}~ 20.10.06 22:27:

и опять ты текст выводишь вне тэга <p></p>
делай так!
<?
header("Content-type:text/vnd.wap.wml; charset=utf-8");
echo "<?xml version=\"1.0\"?>";
?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="card1" title="My Wap Page">
<p>
Hello world - this is my first wap card!
<?php
$text="123";
print("<p>PHP: $text</p>");
?>
</p>
</card>
</wml>
 
Mr_KOT
Здравствуйте!

1. Согласен.
2. Это не так важно, если не используеться кирилический текст.
3. Не так уж важно чем он будет возвращаться, скриптом или непосредственно будет в коде WML
4. Это не имет значение для работы скрипта. Это для формирования страницы.
5. Лучшее пользоваться головой, а валидаторы оставьте на крайний случай.


peresmeshnik
PHP:
echo "<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\" \"http://www.wapforum.org/DTD/wml_1.1.xml\">";
Попробуйте так.
 

peresmeshnik

Новичок
Mr_KOT
Огромное спасибо за ваши советы!!!
вот итоговый код:

PHP:
<?
	header("Content-type:text/vnd.wap.wml; charset=utf-8");
	echo "<?xml version=\"1.0\"?>";
	echo "<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\" \"http://www.wapforum.org/DTD/wml_1.1.xml\">";
?>
<wml>
<card id="card1" title="My Wap Page">
<p>&#x041F;&#x043E;&#x0438;&#x0441;&#x043A;</p>
<?php
$text="123";
print("<p>PHP: $text</p>");
?>
</card>
</wml>
Сложнее всего мне было найти именно это! На форумах, в книгах как правило пишут отрывками, и мне совершенно было непонятно для чего они используют те, или иные коды в процессе создания именно динамичных вап страниц.
Так же я замети, что напрямую с кириллицей вап сайты не работают, я так понимаю, что это связано с разными версиями прошивок телефонных аппаратов. Например на wap.mail.ru испльзуют код такого вида:
PHP:
 &#x041F;&#x043E;&#x0438;&#x0441;&#x043A;
Имеет ли мне смысл использовать подобный прием?


Curly-fingers
Спасибо, все работает в обоих случаях!
 
peresmeshnik
Для упрощения работы скрипта и воизбежания писать крякозябрами utf-8 можно написать вот что

lang.php
PHP:
$lang['Welcome']="Привет";
$lang['Search']="Поиск по сайту";
index.php
PHP:
require_once("lang.php");
foreach($lang as $key=>$value)
{
$lang[$key]=iconv("cp1251","utf-8",$lang[$key]);
}
echo $lang['Welcome'];
Но это всего лишь пример. Вам советую включить фантазию.
 

peresmeshnik

Новичок
Curly-fingers
Интересная мысль! Собственно мне нужно, чтобы клиентская версия страницы весила до 4х кб, возможно, что имспользование мнимоников значительно увеличит загружаемый обьем. Но у меня есть еще вариант скрипта, в котором у меня на телефоне и в браузере отлично читается кириллица:

PHP:
<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="index" title="index">
<p>Привет</p>
</card>
</wml>
Надежно ли использование этого способа?
 

asics

Новичок
Не стал создавать новую тему, т.к. эта близка.

У меня есть сайт, все страницs которого *.html, мне нужно вставить в *.html страницы php код и заставить его работать на них не меняя расширение на *.php. Знаю, что это можно сделать через htaccess, порылся в гуугле и нашел:

Как заставить Апач выполнять в html документах php код?

Иногда бывает полезно "обмануть" посетителя, выдавая ему свои php-скрипты или иные файлы, как html файлы. Реально используется для индексации поисковой системой Rambler php-скриптов. Некоторые делаю мелкие фишки, вроде того, что дают фалам расширения совпадающие с какими-либо "знаковыми" именами. Например, на сайте www.osg.ru используются файлы с расширением osg: index.osg, script.osg и т.п.

RemoveHandler .html .htm
AddType application/x-httpd-php .php .htm .html .phtml
Вбил в htaccess эти 2 строки и положил в корень сайта, но рхр на штмл страницах не отображается. В чем может быть проблема?
 
Сверху