• ベストアンサー

WordPressの質問(q10093310)の続

スタンプ画像を送信する機能をデータベースに格納したいのですが、格納した数字と画像URLを結び付ける方法が分かりません。 アドバイスお願い致します。 ※最新のコード https://wandbox.org/permlink/A4VLYzAR2h4uYYRh

質問者が選んだベストアンサー

  • ベストアンサー
  • dell_OK
  • ベストアンサー率13% (776/5751)
回答No.33

・3点目は表示についてになります。前述のとおりtokenの使い方が難しく参考サイトを見ても文字と画像どちらに対する防御コードか理解できておりません。 tokenについては先の回答で大丈夫ですね ・表示コードは下記のようになるのではないかと書いているのですが、スタンプ画像のほかに名前とメッセージにもisset関数で変数がセットされているか確認する必要があるのか分からなかったため、 それっぽい処理はすでにされていますよ。 ただ、メール送信から部分的にコピーしてきただけのようなのでこれだけではだめです。 ---- $namae_value = isset($namae) ? htmlspecialchars($namae, ENT_QUOTES) : ''; $message_value = isset($message) ? htmlspecialchars($message, ENT_QUOTES) : ''; ---- あと、必須のチェックはHTML任せになっているので、PHP側でもチェックするようにした方がいいのかも知れません。 いただいた質問にだけ簡単に回答していたので、コードをよく見ていませんでした。 細かく見てみると、いろいろと直した方がよさそうです。 メール送信から拝借したためなのもあるので、あれとはまったく別物と思ってください。 その1。 最初の方にある不正アクセスはコードに無駄があります。 ---- $noindexaccess = true; ~(省略:インラインフレーム禁止) // 不正アクセスチェック if (!$noindexaccess) { header('HTTP/1.0 404 Not Found'); exit; } // 不正アクセスチェック if (!$noindexaccess || isBot()) { header('HTTP/1.0 404 Not Found'); exit; } ---- これだけでいいです。 ---- // 不正アクセスチェック if (isBot()) { header('HTTP/1.0 404 Not Found'); exit; } ---- その2。 エラー表示がありますが、チェック処理がありません。 ---- echo '<div style="color:red;">'; // エラーメッセージがあったら表示する echo ($error_mes) ? ' ---------------------<br />  入力エラーです<br /> ---------------------<br />'.$error_mes : ''; echo '</div>'; ---- これより前にチェック処理をしてください。 こんな流れになります。 ---- // エラーメッセージ $error_mes = ''; ~チェック処理 echo '<div style="color:red;">'; // エラーメッセージがあったら表示する echo ($error_mes) ? ' ---------------------<br />  入力エラーです<br /> ---------------------<br />'.$error_mes : ''; echo '</div>'; ---- 他にもありますが、今日はここまでにしておきます。

php_learn
質問者

補足

Q.tokenについては先の回答で大丈夫ですね それっぽい処理はすでにされていますよ。 ただ、メール送信から部分的にコピーしてきただけのようなのでこれだけではだめです。 ---- $namae_value = isset($namae) ? htmlspecialchars($namae, ENT_QUOTES) : ''; $message_value = isset($message) ? htmlspecialchars($message, ENT_QUOTES) : ''; ---- A.アドバイスありがとうございます。tokenは送信する際に生成するものだと理解できました。 確かに中の文字列チェックは行われていますがHTMLですね。 Q.その1。 最初の方にある不正アクセスはコードに無駄があります。 ---- $noindexaccess = true; ~(省略:インラインフレーム禁止) // 不正アクセスチェック if (!$noindexaccess) { header('HTTP/1.0 404 Not Found'); exit; } // 不正アクセスチェック if (!$noindexaccess || isBot()) { header('HTTP/1.0 404 Not Found'); exit; } ---- A.こちらのコードは保存と表示のファイルを分けるという想定をしていたので残しておりました。今のところ削除と保存のコードファイルは分けることに決めているのですが、表示は同じファイルで実装できそうでしょうか? Q.その2。 エラー表示がありますが、チェック処理がありません。 ---- echo '<div style="color:red;">'; // エラーメッセージがあったら表示する echo ($error_mes) ? ' ---------------------<br />  入力エラーです<br /> ---------------------<br />'.$error_mes : ''; echo '</div>'; ---- A.こちらはお問合せフォーム用のファイルを見ると文字列チェックなどのコードを別ファイルに書いていてそちらを外部から読み込んでいるようです。 rerification.phpに文字列チェック用コードを書いたのですが、こちらは外部から読み込ませたほうが良いでしょうか?そのままecho '<div style="color:red;">';の上に追加するべきでしょうか? ※最新コード https://wandbox.org/permlink/4aLeppvHjfrIycUx

すると、全ての回答が全文表示されます。

その他の回答 (32)

  • dell_OK
  • ベストアンサー率13% (776/5751)
回答No.2

・先に表示で確認すべきでしょうか?画像の2件アップロード機能も雑談掲示板にも取り付けてみたいと考えていたんですが… では、画像のアップロードを取り付けてみてください。

php_learn
質問者

補足

回答ありがとうございます。アップロード機能を作成してみたのですが、不安な事と悩んでいる事があります。 不安な点ですが、画像を別々に見える形で2つアップロード可能な形になっているのか(何かしらエラーが出ないか) 「ファイルを選択」のボタンを画像に変えるコードを作成したのですが、URLの引っ張り方を間違えている気がします。 悩んでいることは画像の保存形式です。下記の3つの方法が使えそうなのですが、5日間でデータベースの中身を削除するためどの方法が適しているのか判断しかねます。 画像は各掲示板で200~300レスポンス×2件ずつで掲示板は2つなので2倍の最大1200件を想定しているため画像が1MBで計算すると1.2GB圧迫することになります。 レスポンスは各200まで下げることで800MBまで下げることは可能ですがそれでもかなり大きなデータになりそうです。 データベースに画像を保存すると負荷が気になるのですが、その他の方法はどのように保存するか見当もつかないため不安です。 dell_okさんから見てどの方法が良さそうでしょうか? 1,画像をデータベースに保存する 2,画像があるパスを保存する(意味が不明) 3,拡張子文字列だけを保存する(意味が不明) ※現在のコード https://wandbox.org/permlink/6M5m01uOhyz1CI0x ※画像の保存方法について https://teratail.com/questions/81233 ※ファイルを選択のボタンを画像に変更 https://www.nishishi.com/css/input-type-file-icon.html ※画像アップロード機能1 https://catnose.me/learning/html/input-file ※画像アップロード機能2 https://ryjkmr.com/input-typefile-img-display/

すると、全ての回答が全文表示されます。
  • dell_OK
  • ベストアンサー率13% (776/5751)
回答No.1

・配列にまとめたものを格納する数字とどのように結びつけて良いのかわからないのですが、 前回の回答のような方法で配列を設定した場合は、 ひとつ目が0から始まる連番がキーになっています。 以下のように書いているのと同じです。 これを見れば、格納した数字が配列のキーと同じであることがわかるでしょうか。 ---- $stamps = array(); $stamps[0] = 'http://www.last.cfbx.jp/wp-content/uploads/2022/10/FIGURE-146070.jpg'; $stamps[1] = 'http://www.last.cfbx.jp/wp-content/uploads/2022/10/FIGURE-146281.jpg'; $stamps[2] = 'http://www.last.cfbx.jp/wp-content/uploads/2022/10/FIGURE-146282.jpg'; $stamps[3] = 'http://www.last.cfbx.jp/wp-content/uploads/2022/10/9416845000734.jpg'; $stamps[4] = 'http://www.last.cfbx.jp/wp-content/uploads/2022/10/bd3713656360f94acb07764cbb2b05a90006a26d160f9f9241f14fff7417fc51_01.jpg'; $stamps[5] = 'http://www.last.cfbx.jp/wp-content/uploads/2022/09/FIGURE-145522.jpg'; ---- 表示で使うときは $stamps[格納した数字] で参照できます。 格納した数字、は実際は変数になってくると思います。 ・格納した数字はどのように取得するのでしょうか? 格納した数字だけを取得することはありません。 メッセージや名前と一緒にsortableから取得するようになります。 雑談掲示板の一覧表示は作れそうですか。

php_learn
質問者

補足

Q.表示で使うときは $stamps[格納した数字] で参照できます。 雑談掲示板の一覧表示は作れそうですか。 A.アドバイスありがとうございます。コードをみて理解することができました。 $stamps[格納した数字]で表示することができるんですね、勉強になりました。 先に表示で確認すべきでしょうか?画像の2件アップロード機能も雑談掲示板にも取り付けてみたいと考えていたんですが…

すると、全ての回答が全文表示されます。

関連するQ&A