2017-09-01 46 views
0

我在項目上工作,我需要幫助顯示在一個頁面上輸入的用戶類型以及使用會話在其他頁面上顯示的內容。如何使用會話在php中傳輸輸入數據

這是我的網頁代碼,其中用戶鍵入他/她的名字:

<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
</head> 
<body> 

    <form action="s2q2.php" name="s2n" method="POST"> 
     <p>Enter your name:</p> 
     <input style="border: none; border-bottom: dashed; height: 50px; width:25%; margin-top: 45px; font-size: 35px;" type="text" script="sessionStorage.setItem('s2n');"><br> 
     <button class="button" type="submit" style="vertical-align: center; background-color: #1e00ff; margin-top: 50px;" name="s2q1"><span>Next </span></button> 
    </form> 

</body> 
</html> 
+0

這段代碼是用轉移法POST到一個名爲s2q2.php網站的變量。你也可以發佈這個網站嗎? –

+0

另外,你引用了[sessionStorage.setItem()](https://developer.mozilla.org/en-US/docs/Web/API/Storage/setItem),但我不認爲'input'元素有'腳本「屬性。那有什麼打算做的? – showdev

+1

[手冊](http://php.net/manual/en/function.session-start.php)的會話始終是一個很好的開始。 – Qirel

回答

0

你的問題是有點混亂,但根據我的經驗用PHP在這裏工作是我們$_POST數據以及如何使用$_SESSION的簡單的方法

編輯:在你的問題,我們不知道你是否知道如何使用session_start()或不。我們也不知道程序中的文件和文件夾是如何設置的,以給出正確的答案。但通常(以及我)我創建了一個包含數據庫信息的文件,然後將該文件包含在頭文件(header.php)中,因爲程序中通常包含header.php。我創建的文件示例假設您使用的是mysqli

的config.php

if (session_status() == PHP_SESSION_NONE) { 
define('DB_SERVER', 'localhost'); 
    define('DB_USERNAME', 'root'); 
    define('DB_PASSWORD', 'root'); 
    define('DB_DATABASE', 'my_database_name'); 
    $db = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE); 
} 

    // This tells the web browser that your content is encoded using UTF-8 
    // and that it should submit content back to you using UTF-8 
    header('Content-Type: text/html; charset=utf-8'); 

    // This initializes a session. Sessions are used to store information about 
    // a visitor from one web page visit to the next. Unlike a cookie, the information is 
    // stored on the server-side and cannot be modified by the visitor. However, 
    // note that in most cases sessions do still use cookies and require the visitor 
    // to have cookies enabled. For more information about sessions: 
    // http://us.php.net/manual/en/book.session.php 
    session_start(); 

    // Note that it is a good practice to NOT end your PHP files with a closing PHP tag. 
    // This prevents trailing newlines on the file from being included in your output, 
    // which can cause problems with redirecting users. 

header.php文件(包括本文件無處不在,你需要或者包括的config.php)

header('Content-Type: text/html; charset=iso-8859-1'); 
ini_set('display_errors', 1); ini_set('log_errors',1); error_reporting(E_ALL); mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);//handle php errors 
ob_start();//prevent header from being sent twice 
require_once('config.php'); 

形式

require_once('header.php'); 

<form action="s2q2.php" method="POST"> 
    <p>Enter your name:</p> 
    <input type="text" name="name"><br> 
    <button type="submit" name="s2q1"><span>Next </span></button> 
</form> 

s2q2.php

if (isset($_POST['s2q1'])) {  // Retrieve form 
    $name = $_POST['name'];  // retrieve data name 
    $_SESSION['name'] = $name; // pass data in session 
} 

使用$_SESSION

if (isset($_SESSION['name'])) { 
    echo $_SESSION['name']; 
} else { 
    //do something else; 
} 
+1

您需要先啓動會話才能使用它。 – Qirel

+0

@Qirel:好吧,這不是問題的一部分,如果我們需要說明OP如何處理整個過程,那麼它有點超出範圍,他/她應該閱讀文檔或詢問不同的問題。 –

+0

OP問及如何使用會話,並且在開始會話之前不能使用會話 - 所以我會說這非常符合問題的範圍;-) – Qirel

0

首先,修改表單輸入有一個名字:

我參與這個項目,我需要幫助顯示在一個頁面上輸入的用戶類型以及使用會話在另一個頁面上顯示的內容。

這是我在那裏用戶鍵入他/她的名字的網頁代碼:

<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
</head> 
<body> 

    <form action="s2q2.php" name="s2n" method="POST"> 
     <p>Enter your name:</p> 
     <input name="username" style="border: none; border-bottom: dashed; height: 50px; width:25%; margin-top: 45px; font-size: 35px;" type="text" script="sessionStorage.setItem('s2n');"><br> 
     <button class="button" type="submit" style="vertical-align: center; background-color: #1e00ff; margin-top: 50px;" name="s2q1"><span>Next </span></button> 
    </form> 
</body> 
</html> 

然後,s2q2.php頁:

<?php 
session_start(); 

$_SESSION["username"] = $_POST["username"]; 
echo $_SESSION["username"] ; 
?> 
+1

對於PHP的任何內容,元素ID都不會有用 - 您需要使用輸入的名稱。你還需要使用'session_start()'。 – Qirel

+0

thnx Qirel,它應該是名字。 –

0

首先創建一個會話文件名爲在session_start。 php看起來像這樣

<?php 
    session_start(); 
?> 

然後你只是需要d到處包括它,你希望你的會話變量

<!DOCTYPE html> 
<html> 
<head> 
    <title>Input Site</title> 
    <style> 
    .input1 { 
      border: none; 
      border-bottom: dashed; 
      height: 50px; width:25%; 
      margin-top: 45px; 
      font-size: 35px; 
      } 
    .button1 { 
      vertical-align: center; 
      background-color: #1e00ff; 
      margin-top: 50px; 
      } 
    </style> 
</head> 
<body> 

<form action="" method"post"> 
<p>Enter your name:</p> 
<input class="input1" type="text" name="nameInput"><br> 
<button class="button1" type="submit" name="submitBut"><span>Next</span></button> 
</form> 

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

if (isset($_POST['submitBut'])) { 
$_SESSION['nameInput'] = $_POST['nameInput']; 
} 
?> 
</body> 
</html> 

然後創建任何網站whatever.php,只是有包括你的session_start。PHP文件

<!DOCTYPE html> 
<html> 
<head> 
    <title>Whatever Site</title> 
</head> 
<body> 
<?php 
// including the session file 
require_once("session_start.php"); 
?> 
<strong><?php echo $_SESSION['nameInput'];?></strong> 
</body> 
</html> 
+0

'session_start()'不應該在任何輸出後,它可能不會被啓動,如果它是 - 見https://stackoverflow.com/questions/8028957/how-to-fix-headers-already-sent-error-在php中 - 我真的沒有理由爲什麼要在一個單獨的文件,如果這是它的一切。 (和挑剔:'require'不是函數);-) – Qirel

+0

session_start.php中的session_start()之後沒有輸出。 –

+0

但在使用之前。包含文件之前,您有HTML。 – Qirel

0

哦,好吧,讓我們看看另一個例子(需要輸出前消毒$名字!)

<?php 
    $name = isset($_SESSION['key_whatever']) ? $_SESSION['key_whatever'] :null; 
?> 

    <!DOCTYPE html> 
    <html> 
    <head> 
     <title></title> 
    </head> 
    <body> 

     <form action="s2q2.php" method="POST"> 
      <p>Enter your name:</p> 
      <input type="text" name="name" value="<?=$name?>"> 
      <br> 
      <button type="submit" name="s2q1"><span>Next </span></button> 
     </form> 

    </body> 
    </html> 





/* 

    on submit if youre not using any rewrite rules -> s2q2.php will be compiled and executed 

     -------s2q2.php------- 
*/ 
<?php  
    session_start(); <--- need to be set 
    $_SESSION['key_whatever'] = isset($_POST['name']) ? $_POST['name'] : null; 

?>