Не могу заставить работать простой PHP; простой переключатель изображений elseif по расписанию

0

Кажется, я не могу понять, в чем проблема. Я размещен на 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"

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

Спасибо всем за исправление моих заявлений --- определенно никогда бы не сработало без этого!

Теги:
.htaccess

6 ответов

2

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

Ваши заявления эха должны меняться на одинарные кавычки:

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, он работает нормально без него?

  • 0
    Большое спасибо за исправление моих утверждений эха. Я сделал это, и, к сожалению, у меня все еще есть та же проблема. Когда я загружаю тестовую страницу, все, что я вижу, - это все изображения одно за другим с промежуточным кодом. Я заметил, что тег <? Php open не отображается, а тег?> Close. Также я попытался удалить .htaccess, и это не имело никакого значения. Кроме того, по какой-то причине оператор «если», кажется, проанализировал.
  • 0
    Что такое "test.php в строке 12"
0

Чтобы использовать кавычки внутри строки, вы должны просмотреть их, если это та же самая цитата, которую вы использовали для начала строки. Если вы используете одинарные кавычки, полезно использовать двойные кавычки на нем, как в $str = 'this "was" something'; Но если вы используете двойные кавычки, вы должны просмотреть их, чтобы сообщить парсеру, что вы не заканчиваете строку в этой точке: $str = "this \"was\" something"; , Таким образом, синтаксический анализатор понимает, что цитата является фактическим символом, а не концом строки.

То же самое происходит, если вы используете одиночную кавычку: $str = 'this \'was\' something'; ,

Здесь вы можете получить дополнительную информацию о строках PHP:

Чтобы указать буквенную одинарную цитату, сбегите ее с помощью обратного слэша(). Чтобы указать буквенную обратную косую черту, удвойте ее (\). Все остальные экземпляры обратной косой черты будут рассматриваться как буквальная обратная косая черта: это означает, что другие escape-последовательности, к которым вы могли бы привыкнуть, такие как \r или\n, будут выводиться буквально, как указано, а не иметь какое-либо особое значение.

0

избегать двойных кавычек в ваших строках

echo "<img src=\"maps/img1.jpg\" />"

или использовать одинарные кавычки

echo "<img src='maps/img1.jpg' />"
0

Ваши echo инструкции не используют правильные двойные кавычки.

Итак, ваше выражение:

echo("<img src="maps/img1.jpg" />");

Закрывается на "maps и, следовательно, код появляется после того, как он, по-видимому, является ошибкой анализа.

Исправлено:

echo("<img src=\"maps/img1.jpg\" />");

У вас всегда должна быть хорошая практика, чтобы правильно закрыть ваши строки.

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

0

Всякая эхо- функция, которую вы закодировали, ошибочна. Каждый из них должен выглядеть следующим образом:

echo "<img src='maps/img1.jpg' />";

Вот справочная страница echo: php.net/manual/en/function.echo.php

  • 0
    echo может использоваться с синтаксисом функции.
  • 0
    @MuriloVasconcelos Да, это может
0
if($date == "10,06"){ echo("<img src=\"maps/img1.jpg\" />");

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

Подробнее здесь: http://www.tizag.com/phpT/echo.php

Ещё вопросы

Сообщество Overcoder
Наверх
Меню