web-dev-qa-db-ja.com

フォームデータをセッション変数として保存する

そのため、フォームからのデータをセッション変数として保存することが可能かどうか疑問に思っていました。

ここに私がこれまでに持っているものがありますが、フォームアクションのために何を置くべきか分かりません。

見てくれてありがとう!

<strong>Test Form</strong>
<form action="" method"post">
    <input type="text" name="picturenum"/>
    <input type="submit" name="Submit" value="Submit!" />
</form>

<? 
    if (isset($_POST['Submit'])) { 
        $_session['picturenum'] = $_POST['picturenum'];
    } 
?> 

<strong><? echo $_session['picturenum'];?></strong>
18
Kevin Johnson

セッション変数を使用するには、session_start関数を使用してセッションを開始する必要があります。これにより、データをグローバル変数$_SESSIONに永続的に保存できます。

コードは最終的に次のようになります。

<strong>Test Form</strong>
<form action="" method"post">
<input type="text" name="picturenum"/>
<input type="submit" name="Submit" value="Submit!" />
</form>

<?php 

 // starting the session
 session_start();


 if (isset($_POST['Submit'])) { 
 $_SESSION['picturenum'] = $_POST['picturenum'];
 } 
?> 

<strong><?php echo $_SESSION['picturenum'];?></strong>

使いやすくし、再度忘れないようにするために、すべてのコードに含まれてセッションを開始するsession_file.phpを作成できます

session_start.php

 <?php
   session_start();
 ?> 

そして、あなたが好きな場所にそれを含めます:

<strong>Test Form</strong>
<form action="" method"post">
<input type="text" name="picturenum"/>
<input type="submit" name="Submit" value="Submit!" />
</form>

<?php 

 // including the session file
 require_once("session_start.php");


 if (isset($_POST['Submit'])) { 
 $_SESSION['picturenum'] = $_POST['picturenum'];
 } 
?> 

これは、将来のメンテナンスのためのよりポータブルで簡単な方法です。

その他の発言

  • apacheバージョン2以上を使用している場合は、代わりに注意してください
    <?
    phpのタグを開くには、<?phpを使用します。そうしないと、コードが解釈されません。

  • pHPの変数名は大文字と小文字を区別します。$ _ sessionを書くのではなく、大文字で$ _SESSIONを書きます

よくできました !

35

それは完全に問題なく動作します。ただし、セッションを使用するには、PHPコードの最初の行にsession_start();を配置する必要があります。だから基本的に

<?php
session_start();

//rest of stuff

?>
7
kjones1876

はい、これは可能です。 kizzieはsession_start();が最初に行かなければならないので正しいです。

私が行った別の観察では、次を使用してフォームデータをフィルタリングする必要があります。

strip_tags($value);

および/または

stripslashes($value);
2
Todd Moses

次のコードを使用して、この問題を解決できます。

if(!empty($_GET['variable from which you get'])) 
{
$_SESSION['something']= $_GET['variable from which you get'];
}

したがって、GETフォームから変数を取得し、$_SESSION['whatever']変数は、$_GET['variable from which you get']が設定され、空の場合は$_SESSION['something']は古いパラメータを保存します

1
giuseppe