下記、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}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。