質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1259閲覧

session_start()の位置で、動作結果が違う?

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/07/30 00:38

下記、2つのPHPコードですが、
session_start();の位置のみ異なります。
この2つは動作結果は同じでしょうか?

実際に下のコードだと、
if文がelseにいくように動作結果から思いますが、
これがなぜだか分かりません。

php

1<?php 2function my_shortcode_handler( $atts ) { 3 4 if ( $_SERVER["REQUEST_METHOD"] == "POST" ) { 5 session_start(); 6 if( isset( $_SESSION["key"], $_POST["key"] ) && $_SESSION["key"] == $_POST["key"] ) { 7 unset( $_SESSION["key"] ); 8 my_handle_form_submitted(); 9 } else { 10 header('Location: ' . get_permalink() ); 11 } 12 } 13 14 session_start(); 15 $_SESSION["key"] = md5(uniqid().mt_rand()); 16 ?> 17 18 <?php ob_start(); ?> 19 <div class="my-container"> 20 <form action="<?php the_permalink(); ?>" method="post"> 21 <input type="hidden" name="key" value="<?php echo htmlspecialchars( $_SESSION["key"], ENT_QUOTES );?>"> 22 <label for="email">E-mail:</label> 23 <input type="email" id="email" name="user_mail"> 24 <button type="submit" name="example" value="ボタン">送信</button> 25 </form> 26 </div> 27 <?php return ob_get_clean(); ?> 28<?php 29}

php

1<?php 2function my_shortcode_handler( $atts ) { 3 4 session_start(); 5 $_SESSION["key"] = md5(uniqid().mt_rand()); 6 ?> 7 8 if ( $_SERVER["REQUEST_METHOD"] == "POST" ) { 9 session_start(); 10 if( isset( $_SESSION["key"], $_POST["key"] ) && $_SESSION["key"] == $_POST["key"] ) { 11 unset( $_SESSION["key"] ); 12 my_handle_form_submitted(); 13 } else { 14 header('Location: ' . get_permalink() ); 15 } 16 } 17 18 <?php ob_start(); ?> 19 <div class="my-container"> 20 <form action="<?php the_permalink(); ?>" method="post"> 21 <input type="hidden" name="key" value="<?php echo htmlspecialchars( $_SESSION["key"], ENT_QUOTES );?>"> 22 <label for="email">E-mail:</label> 23 <input type="email" id="email" name="user_mail"> 24 <button type="submit" name="example" value="ボタン">送信</button> 25 </form> 26 </div> 27 <?php return ob_get_clean(); ?> 28<?php 29}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

二重にsession_start()を指定するのはおかしいと思います

投稿2020/07/30 01:05

yambejp

総合スコア114829

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問