PDA

Просмотр полной версии : $string =<<<HTML правила использования


Mnilionic
04.05.2007, 16:43
Есть ли каки-нибудь условия или ограничения на конструкции


$output =<<<HTML
текст {$var} текст
HTML;

А то эта чтука у меня сегодня работает, завтра не работает... в одном месте страницы всё ок, в другом unexpected T_SL

Не могу уловить закономерности

Skubent
04.05.2007, 17:10
Закрывающий идентификатор должен быть обрамлен символами перевода строки в текущей операционке. И не должен содержать никаких других символов, кроме необязательной точки с запятой.
(симптомы - parse error в строке = последней строке файла).

В инициализации членов класса хередок запрещен.

Mnilionic
04.05.2007, 17:28
я так и делаю.
Закрывающий идентификатор с новой строки в упор к краю.

ошибка возникает не в конце конструкции, а в строке её начала.

Skubent
04.05.2007, 17:45
Давай код, который отваливается с ошибкой.
И под какой операционкой он падает.

Mnilionic
04.05.2007, 17:59
linux

<?php
/* $Id$ */

function download_help($section='') {

$output = '';

switch ($section) {
case "admin/modules#description":
$output = t("Download module");
break;
}

return $output;
} // function onthisdate_help

function download_perm() {
return array('access download');
} // function onthisdate_perm()

function download_all() {
if (!user_access("access download")) {
return "";
}

if(isset($_POST[pw])){
$password = $_POST[pw];
$result1 = db_query("SELECT count, time, blocked FROM {download} WHERE password='%s'", $password);
while ($bodyb = db_fetch_object($result1)) {
$data->count = $bodyb->count;
$data->blocked = $bodyb->blocked;
$data->time = $bodyb->time;
}

if($data->blocked == '' || $data->count == '' || $data->time == ''){
$output = 'Извините, вы указали неправильный пароль. Попробуйте <a href="/download/'.arg(1).'" >еще</a> раз.';
print theme("page", $output);
die();
}
$count = $data->count + 1;
if($count > 3 || $data->blocked == 1 )
{
$output = "Ваш пароль истек или кончились возможные закачки";
$count = 1;
if($data->blocked != 1)
db_query("UPDATE {download} SET blocked = %d WHERE password = '%s'",$count, $password);
print theme("page", $output);
die();
}else{
//$output .= 'OK';
db_query("UPDATE {download} SET count = %d WHERE password = '%s'",$count, $password);
if($data->time == 0){
$data->time = time();
db_query("UPDATE {download} SET time = %d WHERE password = '%s'",$data->time, $password);
}
if( time() - $data->time < 3600 ){
$vidfile = db_result(db_query("SELECT custom_field_5 FROM {video} WHERE nid=%d", arg(1)));
$filenamenum = strrpos($vidfile, '/') + 1;
$filename = substr($vidfile, $filenamenum );
$filenamenum2 = strpos($vidfile, 'u/') + 2;
$filepath = substr($vidfile, $filenamenum2 );
//$output .= 'OK'.$vidfile.'|'.$filename.'|'.$filepath;
print $output;
$headers = array(
'Content-Type: '. 'video/x-flv',
'Content-Length: '. '0',
'Content-Disposition: attachment; filename='.$filename.'"',
);
watchdog('Активирован SMS пароль', 'Пароль '.$password.' активирован в '.$count.' раз');
file_transfer($filepath, $headers);
}else{
$output = "Ваш пароль истек или кончились возможные закачки";
}
}
}else{
$arg = arg(1);
//$output = "Извините, сервис пока не работает.";

$output =<<<HTML
<h1 style="font-size:16px; color:#018fd7; margin:40px 0 0 0">Извините, сервис пока не работает.</h1>
<span style="color:#018fd7">Старт - 10 мая</span>
<br/><br/>';

Введите пароль полученный в SMS код: <br>
<form action="/download/{$arg}" method="post">
<INPUT TYPE=password NAME=pw SIZE=12 MAXLENGTH=12>
<input type="submit" value="скачать"/>
</form>
HTML;
}

print theme("page", $output);
}

function download_menu() {

$items = array();
if (arg(0) == 'download' && arg(1) != '') {
$items[] = array('path' => 'download',
'title' => t('download'),
'callback' => 'download_all',
'access' => user_access('access content'),
'type' => MENU_CALLBACK);
}

return $items;
}

Kikasso
04.05.2007, 19:44
Так после открывающего идентификатора вроде тоже ничего быть не должно, кроме перевода строки?

Mnilionic
04.05.2007, 20:00
Нашёл ошибку:
При открытии идентификатора у меня пробел вкрасля в конце строки.
$output =<<<HTML(вот тут)
...

Mnilionic
04.05.2007, 20:01
Kikasso, точно :)

~~~
04.05.2007, 20:05
Косяк... У тебя после "$output =<<<HTML" - два пробела и один таб!!!

Upd: Упс, опоздал... :(