Кажется, я не могу понять, в чем проблема. Я размещен на GoDaddy, и я написал базовый файл.htaccess, поэтому веб-сайт будет защищен паролем, поскольку он предназначен для клиента. Я не могу найти что-то неправильно с самим php-кодом, но я новичок в php, поэтому, возможно, я пропущу что-то очевидное. Здесь код:
<?php
$date = date("m,d");
if($date == "10,06"){
echo("<img src="maps/img1.jpg" />");
}
elseif($date == "10,10" or "10,11" or "10,12" or "10,13"){
echo("<img src="maps/img2.jpg" />");
}
elseif($date == "10,18" or "10,19" or "10,20"){
echo("<img src="maps/img3.jpg" />");
}
elseif($date == "10,25" or "10,26" or "10,27"){
echo("<img src="maps/img4.jpg" />");
}
elseif($date == "11,01" or "11,02" or "11,03"){
echo("<img src="maps/img5.jpg" />");
}
elseif($date == "11,07"){
echo("<img src="img6.jpg" />");
}
elseif($date == "11,22" or "11,23" or "11,24"){
echo("<img src="maps/img7.jpg" />");
}
elseif($date == "12,01"){
echo("<img src="maps/img8.jpg" />");
}
elseif($date == "12,06" or "12,07" or "12,08"){
echo("<img src="maps/img9.jpg" />");
}
else{
echo("<img src="maps/img10.jpg" />");
}
?>
Я кодирую в Dreamweaver, и код кажется "мертвым", но я не могу понять, что с ним не так. Проблема, похоже, в этой строке:
if($date == "10,06"){ echo("<img src="maps/img1.jpg" />");
}
Но я не вижу в этом ничего плохого. Если я поместил его в тело HTML файла, я получаю изображения с беспорядком кода вокруг них. Если я помещаю его в файл.php, я получаю это сообщение об ошибке:
Parse error: syntax error, unexpected T_STRING in /home/content/##/blahblah/html/test.php on line 12
Если это какая-то подсказка, я попробовал запустить простой
<?php echo "hello world"; ?>
И это просто пустым. Поэтому у меня такое чувство, что это ошибка разрешений, но я не знаю, как это исправить. Я попытался добавить эту строку в файл.htaccess
AddType application/x-httpd-php .html
что приводит к ошибке внутреннего сервера.
Сейчас ТОЛЬКО вещь, содержащаяся в файле.htaccess:
AuthUserFile /home/content/##/blahblah/html/.htpasswd
AuthGroupFile /dev/null
AuthName "EnterPassword"
AuthType Basic
require valid-user
(и, конечно, у меня также есть файл.htpasswd в корне)
Поэтому мне, вероятно, нужно добавить больше информации в.htaccess, но я понятия не имею, что.
EDIT: Я исправил ошибки выражения echo и else (спасибо !!), и я проверил его как на.html, так и на.php. Теперь кажется, что проблема заключается в том, что сервер не хочет читать php в html файле, потому что он, похоже, отлично работает в тесте.php. Как я уже упоминал ранее, я попытался добавить строку AddType application/x-httpd-php.html
в файл.htaccess, но это просто испортило весь сайт. Я перейду к test.html, и он спросит меня, хочу ли я загрузить страницу после ввода этой строки.
EDIT2: Кажется, я решил проблему встраивания php. После большого объема исследований я обнаружил, что GoDaddy позволяет применять пользовательские расширения следующим образом:
Options +ExecCGI
AddHandler x-httpd-php5-3 .mysite
через который я заменил бы ".mysite" на ".html"
Сейчас работает как сон. (хотя мне еще предстоит выяснить, вызовут ли это другие проблемы в будущем)
Спасибо всем за исправление моих заявлений --- определенно никогда бы не сработало без этого!
Хорошо, здесь много чего, я не уверен, что они разрешат ваши проблемы, но из примера при условии, что это нужно изменить.
Ваши заявления эха должны меняться на одинарные кавычки:
if($date == "10,06"){
echo("<img src='maps/img1.jpg' />"); //Note use of single quotes
}
Или вы можете избежать их с помощью слэшей:
if($date == "10,06"){
echo("<img src=\"maps/img1.jpg\" />"); //Note use of escaping
}
Ваши действия elseif
требуют изменения
elseif($date == "10,10" or $date == "10,11" or $date == "10,12" or $date == "10,13"){
echo("<img src='maps/img2.jpg' />"); // You are missing this ^------^
}
Вы также можете отбросить круглые скобки на эхо:
if($date == "10,06"){
echo "<img src='maps/img1.jpg' />"; //Note lack of parentheses
}
Что касается.htaccess, он работает нормально без него?
Чтобы использовать кавычки внутри строки, вы должны просмотреть их, если это та же самая цитата, которую вы использовали для начала строки. Если вы используете одинарные кавычки, полезно использовать двойные кавычки на нем, как в $str = 'this "was" something';
Но если вы используете двойные кавычки, вы должны просмотреть их, чтобы сообщить парсеру, что вы не заканчиваете строку в этой точке: $str = "this \"was\" something";
, Таким образом, синтаксический анализатор понимает, что цитата является фактическим символом, а не концом строки.
То же самое происходит, если вы используете одиночную кавычку: $str = 'this \'was\' something';
,
Здесь вы можете получить дополнительную информацию о строках PHP:
Чтобы указать буквенную одинарную цитату, сбегите ее с помощью обратного слэша(). Чтобы указать буквенную обратную косую черту, удвойте ее (\). Все остальные экземпляры обратной косой черты будут рассматриваться как буквальная обратная косая черта: это означает, что другие escape-последовательности, к которым вы могли бы привыкнуть, такие как \r или\n, будут выводиться буквально, как указано, а не иметь какое-либо особое значение.
избегать двойных кавычек в ваших строках
echo "<img src=\"maps/img1.jpg\" />"
или использовать одинарные кавычки
echo "<img src='maps/img1.jpg' />"
Ваши echo
инструкции не используют правильные двойные кавычки.
Итак, ваше выражение:
echo("<img src="maps/img1.jpg" />");
Закрывается на "maps
и, следовательно, код появляется после того, как он, по-видимому, является ошибкой анализа.
Исправлено:
echo("<img src=\"maps/img1.jpg\" />");
У вас всегда должна быть хорошая практика, чтобы правильно закрыть ваши строки.
Это делает вас уверенным, что вы не получаете никакой ошибки или предупреждения Parse.
Всякая эхо- функция, которую вы закодировали, ошибочна. Каждый из них должен выглядеть следующим образом:
echo "<img src='maps/img1.jpg' />";
Вот справочная страница echo: php.net/manual/en/function.echo.php
echo
может использоваться с синтаксисом функции.
if($date == "10,06"){ echo("<img src=\"maps/img1.jpg\" />");
Вам нужно избегать ваших котировок, обращая их обратно в двойные кавычки, иначе интерпретатор PHP распознает это как конец вашего оператора эха, который он затем ожидает полностью или конкатенацию. Или, как указано ниже, используйте комбинацию одиночных и двойных кавычек, чтобы избежать проблемы полностью.
Подробнее здесь: http://www.tizag.com/phpT/echo.php