我似乎无法弄清楚这里的问题是什么。我在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但是我不知道是什么。
修改
我修复了echo和else语句错误(谢谢!!),我在.html和.php上测试了它。现在看来问题是服务器不想在html文件中读取php,因为它似乎在.php测试中工作正常。正如我之前提到的,我尝试将AddType application/x-httpd-php .html
字符串添加到.htaccess文件中,但它只会弄乱整个网站。我将转到test.html,它会在我输入该字符串后询问我是否要下载该页面。
EDIT2: 我似乎已经解决了嵌入式php问题。经过大量的研究,我发现GoDaddy允许您应用自定义扩展,如下所示:
Options +ExecCGI
AddHandler x-httpd-php5-3 .mysite
我将用'.html'替换'.mysite'
现在就像一个梦想。 (虽然我还没有看到这是否会导致其他问题)
感谢所有人纠正我的陈述 - 如果没有这一点,绝对不会有用!
答案 0 :(得分:2)
好的,这里有很多内容,我不确定这些是否会解决你的问题,但是从提供这个需要改变的例子来看。
您的echo语句需要更改为单引号:
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 ^------^
}
您也可以删除echo上的括号:
if($date == "10,06"){
echo "<img src='maps/img1.jpg' />"; //Note lack of parentheses
}
至于.htaccess没有它可以正常工作吗?
答案 1 :(得分:0)
您编码的每个 echo 函数都是错误的。他们每个人都应该如下:
echo "<img src='maps/img1.jpg' />";
以下是 echo :php.net/manual/en/function.echo.php
的手册页答案 2 :(得分:0)
if($date == "10,06"){ echo("<img src=\"maps/img1.jpg\" />");
你需要通过反复使用双引号内的引号来转义引号,否则PHP解释器会将其识别为echo语句的结尾,然后它会完全结束或连接。或者如下所述,使用单引号和双引号的组合来完全避免问题。
点击此处查看更多信息:http://www.tizag.com/phpT/echo.php
答案 3 :(得分:0)
要在字符串中使用引号,如果与用于启动字符串的引用类型相同,则必须使用它们。如果您使用单引号,最好在$str = 'this "was" something';
上使用双引号但是如果您使用双引号,则必须使用双引号来告诉解析器您当时没有完成字符串:{ {1}}。所以解析器理解引用是一个实际的字符,而不是字符串的结尾。
如果您使用单引号字符串,则同样适用:$str = "this \"was\" something";
。
Here您可以获得有关PHP字符串的更多信息:
要指定文字单引号,请使用反斜杠()对其进行转义。至 指定一个文字反斜杠,加倍(\)。所有其他实例 反斜杠将被视为字面反斜杠:这意味着 您可能习惯的其他转义序列,例如\ r或\ n,将是 按字面意思输出,而不是具有任何特殊含义。
答案 4 :(得分:0)
转义字符串中的双引号
echo "<img src=\"maps/img1.jpg\" />"
或使用单引号
echo "<img src='maps/img1.jpg' />"
答案 5 :(得分:0)
您的echo
语句没有使用正确的双引号。
所以,你的陈述:
echo("<img src="maps/img1.jpg" />");
在"maps
处关闭,因此代码显然是一个解析错误。
更正了一个:
echo("<img src=\"maps/img1.jpg\" />");
你应该有一个很好的做法来正确地关闭你的字符串。
这可以确保您没有得到任何解析错误/警告或不需要的输出。