PHPについて質問です。


phpを使用して下記のページを作成しました。

http://oskuni7.sakura.ne.jp/katarogu.php

上記のページはPHPを使用してphpMyAdminのデータをHTMLに出力するという事をしているのですが、

">

の文字が連続して

">">">">">">">">">">">">">">">">">">">">">">">">">">">">">">">">">">">">">">">">">">

上記の様なものすごく面倒な表記が続く状態になっているのですが、

自分の中では原因がわからず困っております。

連続した">をなくすにはどのようにすればよろしいでしょうか?

何が原因として考えられるでしょうか?

自分が作るページは上記の様な">が毎回続くため非常に困っております。

お手数をおかけしますが時間があるかたおりましたらよろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/06/28 03:32:00
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:kn1967 No.6

回答回数2915ベストアンサー獲得回数301

ポイント100pt

(1)原因

変数内(データベース内)にダブルクォーテーションが含まれているためです。


説明と対応策は既回答にありますので、

以下、本題とはそれますが気になった点、少し書き込ませていただきます。


(2)HTML生成における無駄の削除

kanri_no さえあれば商品の判別はつくのですから、

picture/kosuu/price の3つのhiddenは無駄な情報の垂れ流しです。

この3つを削るだけで、サーバ側の負担も、回線への負担も、

見る人のパソコン上の負担も全て減りますので削除しましょう。


(3)データベース格納における無駄の削除

データベース内にHTMLタグを入れておくのはスペースの無駄ですし、

改造や引越しなどの際にも非常に面倒になりますから、

フォルダ名(gdなど)と画像ファイル名(009.jpgなど)だけを持たせておきましょう。

<img src="http://oskuni7.sakura.ne.jp/F_katarogu/PICTURE/BJ/024.jpg">
  ↓
BJ/024.jpg
もしくは
oskuni7.sakura.ne.jp/F_katarogu/PICTURE/BJ/024.jpg

(4)実際の訂正場所

$PictureBase = 'http://oskuni7.sakura.ne.jp/F_katarogu/PICTURE/';
もしくは
$PictureBase = 'http://';

   ↑ この宣言は一回だけで良いので、先頭の方で行っておけば良いでしょう。

※プログラムの数が増えてくると管理が大変になってくるので、

 共通の関数などを用意して一箇所だけ変更すれば良いようにしますが、

 現状で、新しい事を覚えるのも大変かと思いますし、

 それほど大規模なシステムにもならないでしょうから、

 とりあえずは各プログラムの先頭で宣言するようにしておけばよろしいでしょう。

  <input type="hidden" name="picture" value="'.$row["PICTURE"].'">
  <input type="hidden" name="kosuu" value="'.$row["KOSUU"].'">  
  <input type="hidden" name="price" value="'.$row["PRICE2"].'">';

   ↑  この三行は削除。

echo 
    '    <td style="vertical-align: center; text-align: center;">' .
    '<a href="' . $row["LINK"] . '"><img src="' . $PictureBase . $row["PICTURE"] . '"></a>' .
    '</td>'
;

   ↑  画像表示欄は上のように修正。

※ 結合部分は前後にスペースを入れておくと良いでしょう。

※ 複数行に渡る場合はインデントを適宜入れておくと良いでしょう。

id:aiomock

ご回答ありがとうございます。

2009/06/28 03:24:58

その他の回答5件)

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633

ポイント19pt

PHPのソースがどうなっているか分かりませんが、 input type="hidden" name="picture" に書かれている value 値が異常です。


たとえば下記のようになっている部分が多く、

<input type="hidden" name="picture" value="<img src="http://oskuni7.sakura.ne.jp/F_katarogu/PICTURE/BJ/002.jpg">">

この末尾が繰り返し表示される原因になっています。

おそらく、PHPスクリプトに書いたダブルクォーテーションの閉じ方が間違っているのでしょう。

id:aiomock

ご回答ありがとうございます。

末尾が原因であることはわかったのですが、きちんと””の間に値が入っているとは思うのですが、正式な形にするとどのような形になるのでしょうか。。。

自分ではうまく””の間に挟まれているようにしか見えず、少し困っております。。。

2009/06/25 16:22:53
id:j74th No.2

回答回数1ベストアンサー獲得回数0

ポイント19pt

<input type="hidden" name="picture" value="<img src="http://oskuni7.sakura.ne.jp/F_katarogu/PICTURE/GD/018.jpg">">

の部分ですね。

「<input value="○○">」で囲ってる○○に、「"」と「>」が含まれるので、「value="○○"」が閉じられて、さらに「>」によって、タグも閉じられて、残りの「">」だけが出力されている様子です。

echo('<input value='.htmlentities($img).'">');

等として、「"」「>」を変換した方が良いかと思います。

htmlentitiesの逆変換はhtml_entity_decode()ですが、PHPが受け取るときは「<」「"」にに戻っていて必要ないかも。

id:aiomock

ご回答ありがとうございます。

2009/06/25 16:59:23
id:standard_one No.3

回答回数252ベストアンサー獲得回数23

ポイント18pt

全部ガッツリ見たわけではないですが、ダブルクォートのネストの問題が解決するとだいぶスッキリすると思いますよ。

とりあえず

これを ""

 ↓

こうする ""

id:aiomock

ご回答ありがとうございます。

しかし、すいません。少しわからないです。

2009/06/25 16:59:58
id:pahoo No.4

回答回数5960ベストアンサー獲得回数633

ポイント18pt

自分ではうまく””の間に挟まれているようにしか見えず、少し困っております。。。

PHPのソースがどうなっているのか分かりませんが、原因は、input value の中にダブルクォーテーションが何度も現れることです。


いずれにしても、value値としてHTMLタグを記述することは、セキュリティ上、好ましくありません。クロスサイトスクリプティングを許すことになるからです。


value値としては、画像のURLだけを渡せば十分ではないでしょうか。

id:aiomock

ご回答ありがとうございます。

2009/06/25 17:00:15
id:standard_one No.5

回答回数252ベストアンサー獲得回数23

ポイント18pt

あー、すいません。はてなの記法あんまり把握してないです。

全角で書き直します。

これを ”<img src=”http://oskuni7.sakura.ne.jp/F_katarogu/PICTURE/GD/009.jpg”>”

</p>

 ↓

</p>

こうする ”<img src=’http://oskuni7.sakura.ne.jp/F_katarogu/PICTURE/GD/009.jpg’>”

id:aiomock

ご回答ありがとうございます。

2009/06/25 17:46:33
id:kn1967 No.6

回答回数2915ベストアンサー獲得回数301ここでベストアンサー

ポイント100pt

(1)原因

変数内(データベース内)にダブルクォーテーションが含まれているためです。


説明と対応策は既回答にありますので、

以下、本題とはそれますが気になった点、少し書き込ませていただきます。


(2)HTML生成における無駄の削除

kanri_no さえあれば商品の判別はつくのですから、

picture/kosuu/price の3つのhiddenは無駄な情報の垂れ流しです。

この3つを削るだけで、サーバ側の負担も、回線への負担も、

見る人のパソコン上の負担も全て減りますので削除しましょう。


(3)データベース格納における無駄の削除

データベース内にHTMLタグを入れておくのはスペースの無駄ですし、

改造や引越しなどの際にも非常に面倒になりますから、

フォルダ名(gdなど)と画像ファイル名(009.jpgなど)だけを持たせておきましょう。

<img src="http://oskuni7.sakura.ne.jp/F_katarogu/PICTURE/BJ/024.jpg">
  ↓
BJ/024.jpg
もしくは
oskuni7.sakura.ne.jp/F_katarogu/PICTURE/BJ/024.jpg

(4)実際の訂正場所

$PictureBase = 'http://oskuni7.sakura.ne.jp/F_katarogu/PICTURE/';
もしくは
$PictureBase = 'http://';

   ↑ この宣言は一回だけで良いので、先頭の方で行っておけば良いでしょう。

※プログラムの数が増えてくると管理が大変になってくるので、

 共通の関数などを用意して一箇所だけ変更すれば良いようにしますが、

 現状で、新しい事を覚えるのも大変かと思いますし、

 それほど大規模なシステムにもならないでしょうから、

 とりあえずは各プログラムの先頭で宣言するようにしておけばよろしいでしょう。

  <input type="hidden" name="picture" value="'.$row["PICTURE"].'">
  <input type="hidden" name="kosuu" value="'.$row["KOSUU"].'">  
  <input type="hidden" name="price" value="'.$row["PRICE2"].'">';

   ↑  この三行は削除。

echo 
    '    <td style="vertical-align: center; text-align: center;">' .
    '<a href="' . $row["LINK"] . '"><img src="' . $PictureBase . $row["PICTURE"] . '"></a>' .
    '</td>'
;

   ↑  画像表示欄は上のように修正。

※ 結合部分は前後にスペースを入れておくと良いでしょう。

※ 複数行に渡る場合はインデントを適宜入れておくと良いでしょう。

id:aiomock

ご回答ありがとうございます。

2009/06/28 03:24:58
  • id:aiomock
    ページのコードですが以下になります。

    http://oskuni7.sakura.ne.jp/katarogu.phps

    コード自体に問題はないと思うのですが、問題があった場合教えて頂くと嬉しいです。。。
  • id:taknt
    http://oskuni7.sakura.ne.jp/katarogu.phps

    Not Found
    The requested URL /katarogu.phps was not found on this server.

    見当たらないって。
  • id:aiomock
    申し訳ありません。

    見えるように変更させて頂きました。。

  • id:kmond2
    そろそろ未読回答を開けるようにとの督促がコメントされる予感。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません