2017-08-28 8 views
0

$_POST情報を$_SESSIONとして渡しますが、うまくいかない場合、私のコードで何が間違っているのか分かりません。次のコードは、あなたの問題を解決しますPHPセッションを渡してテキストに書き込むことができません

<?php 
session_start(); 

$_SESSION['nombre'] = $_POST['nombre']; 
$_SESSION['edad'] = $_POST['edad']; 

?> 
<html> 
<form action="accion.php" method="post"> 
<p>Name: <input type="text" name="nombre" /></p> 
<p>Age: <input type="text" name="edad" /></p> 
<p><input type="submit" /></p> 
</form> 
</html> 

セカンドファイル

<?php 
     session_start(); 
     if(isset($_SESSION['nombre']) && isset($_SESSION['edad'])) { 
      $data = $_SESSION['nombre'] . '-' . $_POST['edad'] . "\n"; 
      $ret = file_put_contents('mydata.txt', $data, FILE_APPEND | LOCK_EX); 
      if($ret === false) { 
       die('There was an error writing this file'); 
      } 
      else { 
       echo "$ret bytes written to file"; 
      } 
     } 
     else { 
      die('no post data to process'); 
     } 
     ?> 
+3

を使用して代わりに、同じページでフォームを送信したい場合はここでもう一度、あなたの質問をチェックして、正直に答える:あなたは真剣にあなたが答えることができる掲示どう思いますか? – zerkms

+1

これは2つのファイルですか?もう少し明確にしてください。 –

+1

'$ _SESSION'データは、情報が設定されていることを確認せずに、フォームと同じページに設定されているようです。どんなコードがどのページにあるのかは、はっきりとはっきりしていますが。 –

答えて

0

File1.php

<html> 
<form action="File2.php" method="post"> 
<p>Name: <input type="text" name="nombre" /></p> 
<p>Age: <input type="text" name="edad" /></p> 
<p><input type="submit" /></p> 
</form> 
</html> 
<?php 
echo $_GET['msg']; 
?> 

File2.php

<?php 
    session_start(); 
    if(isset($_POST['nombre']) && isset($_POST['edad'])) { 
     $_SESSION['nombre'] = $_POST['nombre']; 
     $_SESSION['edad'] = $_POST['edad']; 
     $data = $_SESSION['nombre'] . '-' . $_POST['edad'] . "\n"; 
     $ret = file_put_contents('mydata.txt', $data, FILE_APPEND | LOCK_EX); 
     if($ret === false) { 
      header("Location:File1.php?msg=There was an error writing this file"); 
     } 
     else { 
      header("Location:File1.php?msg=$ret bytes written to file"; 
     } 
    } 
    else { 
     header("Location:File1.php?msg=no post data to process"); 
    } 
?> 

フォームが提出されると、File2.phpに送信されます

したがって、最初のセッションは設定されており、File1.phpでPOSTから値を取り込むことはできません。

2番目のファイルにセッションを設定し、上記のようにFile1.phpにメッセージを返すことをお勧めします。

+0

なぜか分かりませんが、「処理するポストデータがありません」というメッセージが返され、入力はtxtに保存されません。ありがとうございました。 –

+0

上記のファイルは、あなたや他の何人かによってaccion.phpになっていますか? – asterisk

+0

今すぐ答えを確認してください。 – asterisk

0

コードを確認してください。ファイルの先頭でsessionを一度起動し、sessionに設定する値がpostの変数に含まれているかどうかを確認することをお勧めします。

<?php 
session_start(); 

if(isset($_POST['nombre']) && isset($_POST['edad'])) { 
    $_SESSION['nombre'] = $_POST['nombre']; 
    $_SESSION['edad'] = $_POST['edad']; 
} 

?> 
<html> 
<form action="accion.php" method="post"> 
<p>Name: <input type="text" name="nombre" /></p> 
<p>Age: <input type="text" name="edad" /></p> 
<p><input type="submit" /></p> 
</form> 
</html> 


<?php 
    if(isset($_SESSION['nombre']) && isset($_SESSION['edad'])) { 
     $data = $_SESSION['nombre'] . '-' . $_POST['edad'] . "\n"; 
     $ret = file_put_contents('mydata.txt', $data, FILE_APPEND | LOCK_EX); 
     if($ret === false) { 
      die('There was an error writing this file'); 
     } 
     else { 
      echo "$ret bytes written to file"; 
     } 
    } 
    else { 
     die('no post data to process'); 
    } 
?> 

あなたはaction="action.php"使用action=""

+0

なぜか分かりませんが、「処理するポストデータがありません」と返され、入力はtxtに保存されません。 –

+0

フォームを変更しようとしましたか?これは '

'のようです。 –

+0

申し訳ありませんが、私はそれを忘れてしまいます!今それは動作します!ありがとうございました。 isset()を使って複数の$ _POST変数を確認するにはどうすればいいですか? –

関連する問題