0

ここで何が問題なのか理解できないようです。私は GoDaddy でホストされており、基本的な .htaccess ファイルを作成して、クライアント用であるため Web サイトがパスワードで保護されるようにしました。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 ファイルに含まれているのは次の 1 つだけです。

AuthUserFile /home/content/##/blahblah/html/.htpasswd
AuthGroupFile /dev/null
AuthName "EnterPassword"
AuthType Basic

require valid-user

(もちろん、ルートにも .htpasswd ファイルがあります)

したがって、おそらく.htaccessにもっと多くのものを入れる必要がありますが、何がわかりません。


編集: echo および else ステートメントのエラーを修正し (ありがとう!!)、.html と .php の両方でテストしました。問題は、.php テストで正常に動作しているように見えるため、サーバーが html ファイル内の php を読みたくないことです。前に述べたように、AddType application/x-httpd-php .html文字列を .htaccess ファイルに追加しようとしましたが、Web サイト全体が台無しになります。test.html に移動すると、その文字列を入力した後、ページをダウンロードするかどうか尋ねられます。

EDIT2: 埋め込みphpの問題を解決したようです。大量の調査の結果、GoDaddy では次のようなカスタム拡張機能を適用できることがわかりました。

Options +ExecCGI
AddHandler x-httpd-php5-3 .mysite

これにより、「.mysite」を「.html」に置き換えます

今では夢のように機能します。(これが将来他の問題を引き起こすかどうかはまだわかりませんが)

私の声明を修正してくれてありがとう---間違いなく、それなしでは機能しなかったでしょう!

4

6 に答える 6

2

OK、ここにはやるべきことがたくさんあります。これらで問題が解決するかどうかはわかりませんが、提供された例から、これを変更する必要があります。

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      ^------^
}

エコーの括弧を削除することもできます:

if($date == "10,06"){ 
 echo "<img src='maps/img1.jpg' />"; //Note lack of parentheses
}

.htaccess はなくても正常に動作しますか?

于 2013-10-05T17:10:32.517 に答える
0

文字列内で引用符を使用するには、文字列の開始に使用したのと同じタイプの引用符である場合、それらをスケープする必要があります。単一引用符を使用している場合は、次のように二重引用符を使用$str = 'this "was" something'; することをお勧めします$str = "this \"was\" something";。したがって、パーサーは、引用符が文字列の末尾ではなく、実際の文字であることを理解します。

単一引用符で囲まれた文字列を使用している場合も同様です: $str = 'this \'was\' something';.

ここでは、PHP 文字列に関する詳細情報を取得できます。

リテラルの一重引用符を指定するには、バックスラッシュ () でエスケープします。リテラルのバックスラッシュを指定するには、二重にします (\)。バックスラッシュの他のすべてのインスタンスは、リテラルのバックスラッシュとして扱われます。これは、\r や \n など、慣れている可能性のある他のエスケープ シーケンスが、特別な意味を持つのではなく、文字通り指定されたとおりに出力されることを意味します。

于 2013-10-05T17:08:31.293 に答える
0

文字列内の二重引用符をエスケープします

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

または一重引用符を使用する

echo "<img src='maps/img1.jpg' />"
于 2013-10-05T17:08:38.123 に答える
0

あなたのechoステートメントは適切な二重引用符を使用していません。

だから、あなたの声明:

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

で閉じて"mapsいるため、その後に来るコードは明らかに解析エラーです。

修正したもの:

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

文字列を適切に閉じるには、常に良い習慣が必要です。

これにより、解析エラー/警告または望ましくない出力が発生しないことが保証されます。

于 2013-10-05T17:14:44.047 に答える
0

あなたがコーディングしたすべてのエコー関数は間違っています。それぞれが以下のようになるはずです:

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

echoのマニュアルページは次のとおりです: php.net/manual/en/function.echo.php

于 2013-10-05T17:04:25.223 に答える
0
if($date == "10,06"){ echo("<img src=\"maps/img1.jpg\" />");

二重引用符内にバックスラッシュを付けて引用符をエスケープする必要があります。そうしないと、PHP インタープリターはこれを echo ステートメントの終わりとして認識し、完全に終了するか連結することを期待します。または、以下で説明するように、一重引用符と二重引用符の組み合わせを使用して、問題を完全に回避します。

詳細はこちら: http://www.tizag.com/phpT/echo.php

于 2013-10-05T17:04:36.043 に答える