Basit bir acemi formdan $ _SESSION bilgi alınamıyor

6 Cevap php

Bir formda, ben POST kullanmak ve FormTwo.php için kullanıcı göndermek ve oturumu $ _POST ["ad"] kaydetmek, onun adı için bir kullanıcı isteyin.

Onun soyadı için sormak ve aynı yapmak ve registerComplete.php sayfa onu göndermek için ikinci.

Haklı, $ _SESSION dizi aracılığıyla erişilebilir olmalıdır benim anlamak tarafından, hangi yazdı tüm bilgileri echo çalışıyorum?

Ben yanlış ne yapıyorum? :)

RegisterFormOne.php:

<?php session_start(); ?>

<html>
    <head>
        <title>Registration Form - 1 of 2</title>
    </head>

    <body>
        <h1>Registration - Part 1 of 2</h1>
        <p>Please fill in all the required information before submitting the information.</p>
        <form action="registerFormTwo.php" method="post">
            <dt>First Name:</dt>
                <dd><input type="text" name="firstName" /></dd><br />

            <dt>Last Name:</dt>
                <dd><input type="text" name="lastName" /></dd><br />

            <dt>Age:</dt>
                <dd><input type="text" name="age" /></dd><br />

            <dt>Date of Birth:</dt>
                <dd><input type="text" name="dateOfBirth" /></dd><br />

            <dt>Gender:</dt>
                <dd>Masculino <input type="radio" value="M" name="gender" checked/> &nbsp;&nbsp;
                Femenino <input type="radio" value="F" name="gender" />
                </dd>
            <dt><input type="submit" /></dt>
        </form>
    </body>
</html>

RegisterFormTwo.php

<?php
if ($_POST){
  $_SESSION["firstName"] = $_POST["firstName"];
  $_SESSION["lastName"] = $_POST["lastName"];
  $_SESSION["age"] = $_POST["age"];
  $_SESSION["dateOfBirth"] = $_POST["dateOfBirth"];
  $_SESSION["gender"] = $_POST["gender"];
}
?>
<html>
    <head>
        <title>Registration Form - 2 of 2</title>
    </head>

    <body>
        <h1>Registration - Part 2 of 2</h1>
        <p>Please fill in all the required information before submitting the information.</p>               

        <form action="registerFinish.php" method="post">
            <dt>Nationality:</dt>
                <dd><input type="text" name="nationality" /></dd><br />

            <dt>Profession:</dt>
                <dd>
                    <select name="profession">
                        <option value="sistemas" selected="selected">Ing. Sistemas</option>
                        <option value="electrico">Ing. Electrico</option>
                        <option value="marketing">Marketing y Publicidad</option>
                        <option value="comercio">Comercio</option>
                    </select>
                </dd><br />

            <input type="submit" />
        </form>
    </body>
</html>

registerFinish.php

<?php
if ($_POST){
  $_SESSION["nationality"] = $_POST["nationality"];
  $_SESSION["profession"] = $_POST["profession"];
}
?>
<html>
    <head>
        <title>Registration Complete</title>
    </head>

    <body>
        <h1>Thank you for taking the census.</h1>
        <p>Please take a moment to review your inputted information and confirm when you feel everthing is OK.</p>               

        <ul>
            <li><?php /*This should echo his first name, but nothing shows. */ echo $_SESSION["firstName"]; ?></li>

        </ul>

    </body>
</html>

6 Cevap

Diğer 2 dosyaların başında session_start(); özledim.

Her zaman $_SESSION kullanmak istediğiniz bir komut dosyası çalıştırmak için oturumu, session_start() kullanılarak başlatılması gerekir.

Here, you have 3 distinct scripts, that are executed via 3 distinct HTTP requests...
Which means session_start() should be called at the beginning of the 3 scripts -- and not only the first one.


As a reference, you can take a look at the Session Handling section of the manual.

RegisterFormTwo.php ve dosya başlangıcında registerFinish.php ihtiyaç session_start();.

Sen ^ ^ katılımdan önce () $ _SESSION değişkeni session_start kullanmanız gerekir

Aşağıdaki yoksa sizin soruya ek olarak, daha kolay olurdu. Otomatik olarak doldurulur ediliyor ve yeni bir form gönderme (istediğiniz) değerleri yıkayın çünkü ben bilerek seans içinde bir dizi içinde formu koymak unutmayın.

$_SESSION['form'] = array();    // flushes all the stored form collection in session 
foreach ( $_POST as $key => $value )
{
    $_SESSION['form'][$key] = $value;
}

// now you can access your form's "name" field via $_SESSION['form']['name']
session_start();

Lütfen oturum verilerini silmez. Zaman Oturum veriler sadece silinecektir

session_unset();
session_destroy(); 

veya bireysel oturumda var için

unset( $_SESSION[ 'yoursessionvar' ] );