- ベストアンサー
WordPress質問:不正なトークンのエラーを解決する方法
- WordPressの質問(q10145776)の続 不正なトークンと表示されるため、single-regist.phpから下記のコードを削除したのですが、そちらは問題ないでしょうか? 送信時にトークンが必要だと思いますので、登録結果画面には必要ないのではないかと考えております。
- 確認画面でデータが安全であることが確認された上で$_SESSIONを経由して画面遷移するが、登録結果画面へは不正アクセスできるから必須
- if (empty($_SESSION['token']) || empty($_POST['token']) || $_SESSION['token'] !== $_POST['token']) { exit('不正トークン'); } ※single-regist.phpの11行目からトークンのコードになります https://wandbox.org/permlink/vCbUEZFcvQf2n1DK
- みんなの回答 (33)
- 専門家の回答
質問者が選んだベストアンサー
・質問がみつかりませんと表示されています UUIDが付いてないようです。 http://www.irasuto.cfbx.jp/雑談掲示板%e3%80%80質問表示画面/ UUIDが付いてこんなURLになれば表示されます。 http://www.irasuto.cfbx.jp/雑談掲示板%e3%80%80質問表示画面/?29bbf0d7-34fd-11ee-ad27-e4434ba51b4c ・この表示画面というのは必要なのでしょうか?質問一覧画面から各リンクに飛ぶことで内容を表示させるものだと思っていたのですが… 必要だと思います。 リンクの飛び先が表示画面になると思うのですが、違うのでしょうか。 リンク先のページをどのように作るつもりでしたか。 別ページになるのでしたら必要だと思います。 それとも同じページ内で表示するつもりでしたか。 ・別途データベースにIPアドレスを保存したいと考えております テーブルにカラムを追加して保存するようにしてみてください。 ・質問を一覧表示する際に1番目のアップロード画像とメッセージの一部を並べていきたいのですが可能でしょうか? こんな感じになります。 メッセージの一部、については以前やったことがあると思いますので、$row->messageから取得するようにしてみてください。 ---- <?php /* Template Name: 質問一覧画面 */ get_header(); $sql = 'SELECT * FROM sortable'; $query = $wpdb->prepare($sql); $rows = $wpdb->get_results($query); $upload_dir = wp_upload_dir(); foreach ($rows as $row) { $url = home_url('質問表示画面?'.$row->URL); $pattern = $upload_dir['basedir'].'/attach/'.$row->ID.'_0.*'; $files = glob($pattern); if (empty($files)) { $view = '<img src="ダミー画像パス">'; } else { $info = pathinfo($files[0]); $attach_url = $upload_dir['baseurl'].'/attach/'.$info['basename']; $ext = $info['extension']; switch ($ext) { case 'jpeg': case 'png': $view = '<img style="height: 50px;" src="'.$attach_url.'">'; break; case 'mp4': $view = '<video style="height: 50px;" src="'.$attach_url.'">'; break; case 'pdf': $view = '<iframe style="height: 50px;" src="'.$attach_url.'"></iframe>'; break; default: $view = ''; break; } } echo '<div><a href="'.$url.'">'.$row->namae.'</a></div>'; echo '<div>'.$row->message.'</div>'; echo '<div>'.$view.'</div>'; } ----
その他の回答 (32)
- dell_OK
- ベストアンサー率13% (766/5720)
CSSのみでなければ、どうとでもなりそうですが、私はスタイルシートのことは詳しくないので、別件でその旨だけ質問された方がいいと思います。 現在のコードをリンクしても、たぶん誰もそこまで見ないですし、敬遠されるといけないのでしない方がいいと思います。 単純に画像1枚のときはこう、画像2枚の時はこう、画像3枚の時はこう、とだけ質問してみてください。 添付された画像では要望のものとイメージが合わない気がするので、もし画像を添付されるのでしたら、手書きででも画像とメッセージの配置がわかる枠などを書いた3パターンがあるといいと思います。
補足
アドバイスありがとうございます、他の方から回答を頂いたところ、アップロードファイルの数でif分岐するのがベストではないかとご指摘いただきました。 アップロードされたファイルの数をカウントすることは理解できたのですが、カウントの方法をどうすべきか分からない状態です。データベースでカウントすることは可能なのでしょうか? 画像が1つの場合のデザイン、画像が2つの場合のデザイン、画像が3つの場合のデザイン、をそれぞれ別々にCSS指定して、php の if 文で分岐→ HTML 出力という流れになるようです。 ※現在のコード https://wandbox.org/permlink/5BzYHZPwIfGf6Ngh
- dell_OK
- ベストアンサー率13% (766/5720)
いつのまにか確認画面からトークンがなくなっています。 ---- <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>"> ----
お礼
こちらが最新の質問になります。 CSSの部分でつまずいているのですが、アドバイス頂けると助かります。 アップロードファイルを3つの場合も想定しているので、アップロードファイル数を増やす可能性も考えてCSSを書く予定です。 下記のようにデザインを考えたのですが、3つを想定した場合、画像が横並びになるのですがCSSのみで可能だと思われますでしょうか? CSSのことになるためお聞きするべきか迷ったのですが、分からないで止まってしまったためお聞きさせていただきました… ※イメージデザイン https://imgur.com/Ca1oKUC.jpg ※現在のファイル https://wandbox.org/permlink/4ZqCAwrH0zjbdNYD 画像が1つの場合は画像の横にメッセージが並び、画像を超える場合は下に回りこむようにしたいです。 画像が2つの場合は画像が2つ縦に並び、画像の横にメッセージが並び、画像を超える場合は下に回りこむようにしたいです。 画像が3つの場合は画像が3つ横に並び、画像の下にメッセージが並ぶようにしたいです。
補足
回答ありがとうございます、修正したところトークンのエラーが直り表示することが出来ました。 結果画面のcssを書いて閲覧者のページを作成するように考えております。 https://wandbox.org/permlink/re2EPI4uNBMb95pQ
お礼
質問の期限が切れてしまったので下記のURLからアドバイスお願い致します。 https://okwave.jp/qa/q10165331.html
補足
A.回答ありがとうございます、昨日教えて頂いた質問掲示板 登録結果画面のタイトルから飛べるページをリンク先として考えておりました。 http://www.irasuto.cfbx.jp/%e9%9b%91%e8%ab%87%e6%8e%b2%e7%a4%ba%e6%9d%bf%e3%80%80%e7%99%bb%e9%8c%b2%e7%b5%90%e6%9e%9c%e7%94%bb%e9%9d%a2/ var_dump($row);で確認したところ登録結果画面と質問表示画面でNULLが表示されております。 コードをたどったところ質問表示画面の$sql = 'SELECT * FROM sortable WHERE URL=%s';で取得に失敗しているのではないかと考えたのですが、エラー原因は分かりますでしょうか? ※データベースにURLは格納されております。 https://imgur.com/5RmSq2Y.jpg ※該当コード $url = substr($_SERVER['REQUEST_URI'], -36); $sql = 'SELECT * FROM sortable WHERE URL=%s'; $query = $wpdb->prepare($sql, $url); $rows = $wpdb->get_results($query); var_dump($row); if (empty($rows)) { echo '質問がみつかりません'; exit; } ________________________________________________________________________ Q.テーブルにカラムを追加して保存するようにしてみてください。 A.アドバイスありがとうございます、下記コードでIPアドレスは保存できるようですが、入力画面、確認画面、表示画面どのタイミングで追加すべきでしょうか? $ip_address = $_SERVER["REMOTE_ADDR"]; //文字列形式から数値 に、数値から文字列形式に変換 $ip_long = ip2long($ip_address); -- ipアドレスのテーブル CREATE TABLE tbl_ips ( `ip` INT(10) NOT NULL ); $sql = "INSERT INTO tbl_ips ( ip ) VALUES ( INET_ATON( $ip ) );" Q.こんな感じになります。 メッセージの一部、については以前やったことがあると思いますので、$row->messageから取得するようにしてみてください。 A.アドバイスありがとうございます、メッセージの一部を取得というコードを考えてみました。1点質問があるのですが、<a href="'.$url.'"></a>を名前、画像、メッセージ全体に1つだけかけたい場合どのようなコードにすればよいのでしょうか? ---- <?php /* Template Name: 質問一覧画面 */ get_header(); $sql = 'SELECT * FROM sortable'; $query = $wpdb->prepare($sql); $rows = $wpdb->get_results($query); $upload_dir = wp_upload_dir(); foreach ($rows as $row) { $url = home_url('質問表示画面?'.$row->URL); $pattern = $upload_dir['basedir'].'/attach/'.$row->ID.'_0.*'; $files = glob($pattern); if (empty($files)) { $view = '<img src="ダミー画像パス">'; } else { $info = pathinfo($files[0]); $attach_url = $upload_dir['baseurl'].'/attach/'.$info['basename']; $ext = $info['extension']; switch ($ext) { case 'jpeg': case 'png': $view = '<img style="height: 50px;" src="'.$attach_url.'">'; break; case 'mp4': $view = '<video style="height: 50px;" src="'.$attach_url.'">'; break; case 'pdf': $view = '<iframe style="height: 50px;" src="'.$attach_url.'"></iframe>'; break; default: $view = ''; break; } } echo '<div><a href="'.$url.'">'.$row->namae.'</a></div>'; echo '<div>'.$view.'</div>'; echo '<div>'.mb_strimwidth($row->message, 0, 38, "・・・").'</div>'; } ----