2010-08-20 6 views
3

Я пытаюсь передать значение из элемента управления ввода в форме HTML. Когда я его жестко кодирует, он получает эхо, когда нет, все, что я получаю, это следующее: Тип изобретения не прошел правильно.Значение переменной SESSION не передается

Вот мой page1.php:

<?php 
session_start(); 

$_SESSION['invtype'] = $invtype; 

$firstname = $_POST['firstname']; 
$lastname = $_POST['lastname']; 

if (isset($_POST['Submit'])) { 

     if ($_POST['firstname'] != "") { 
      $_POST['firstname'] = filter_var($_POST['firstname'], FILTER_SANITIZE_STRING); 
      if ($_POST['firstname'] == "") { 
       $errors .= 'Please enter a valid first name.<br/><br/>'; 
      } 
     } else { 
      $errors .= 'Please enter your first name.<br/>'; 
     } 

     if ($_POST['lastname'] != "") { 
      $_POST['lastname'] = filter_var($_POST['lastname'], FILTER_SANITIZE_STRING); 
      if ($_POST['lastname'] == "") { 
       $errors .= 'Please enter a valid last name.<br/><br/>'; 
      } 
     } else { 
      $errors .= 'Please enter your last name.<br/>'; 
     } 

    if (!$errors) {header("location: offerform_switch.php"); 
     } 


     else { 
      echo '<div style="color: red">' . $errors . '<br/> 
       </div>'; 



     } 
    } 

?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> 
    <head> 
     <title>Offer Form, Part 1</title> 
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
     <link rel="stylesheet" href="inventron_sage_short.css" type="text/css" /> 
     <link rel="stylesheet" href="form.css" type="text/css" /> 

    </head> 
    <body> 
     <div id = "logo"> 
      <img src = "img/top.jpg" alt = "logo" /> 
     </div> 
     <div id = "wrapper"> 




      <div id="stylized" class="myform"> 
<form id="form" action="page1.php" method="post"> 



    <p> 
     <label for="firstname">FIRST NAME*: 
     </label> 
     <input type="text" name="firstname" id="firstname" value="<?php echo $firstname?>" /> 
    </p>  

    <p> 
     <label for="lastname">LAST NAME*: 
     </label> 
     <input type="text" name="lastname" id="lastname" value="<?php echo $lastname?>" /> 
    </p>  

    <div id = "category">Categorize your invention:</div> 

<div class="spacer"></div> 

    <p> 
     <select id="invtype" name="invtype"> 
      <option value="0" selected="selected">Select type</option> 
      <option value="product">PRODUCT</option> 
      <option value="software">SOFTWARE</option> 

     </select> 
     <input type="submit" name="Submit" value="Next!" /> 

    </div> 
     </div> 
    </body> 
</html> 

Вот мой offerform_switch.php:

<?php 

session_start(); 
// echo variable from the session, we set this on our other page 
echo $_SESSION['invtype']; 
$invtype = $_SESSION['invtype']; 

//connect to your database ** EDIT REQUIRED HERE ** 
mysql_connect("mysql.myserver.com","myuser","mypassword"); //(host, username, password) 

//specify database ** EDIT REQUIRED HERE ** 
mysql_select_db("invention") or die("Unable to select database"); //select which database we're using 


switch ($invtype){ 
    case "product": 
     include("page2_product.php"); 
     break; 
    case "software": 
     include("page2_software.php"); 
     break; 
    default: 
     echo "The invention type did not go through correctly."; 
} 

?> 

Что я делаю неправильно?

Спасибо!

ответ

3

Это должно быть

$_SESSION['invtype'] = $_POST['invtype']; 
+0

Было время, когда '$ _POST ['var']' будет автоматически экспортироваться в '$ var' – NullUserException

+1

Да, они перестали включать эту опцию по умолчанию, потому что она стала одной из самых позорных угроз безопасности на весь интернет. – Teekin

+0

Спасибо! Это сработало! – vlevsha

0

Вы упускаете "session_id();" прямо под "session_start();". Я не знаю, почему именно это требуется, но если я правильно помню, это так.

+0

Это не обязательно – NullUserException