2010-08-20 10 views
3

J'essaie de transmettre une valeur à partir d'un contrôle d'entrée select sur un formulaire HTML. Quand je le code en dur, il se fait écho, quand ce n'est pas le cas, tout ce que je reçois est le suivant: Le type de l'invention ne s'est pas passé correctement.La valeur de la variable SESSION ne passe pas

Voici mon 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> 

Voici mon 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."; 
} 

?> 

Qu'est-ce que je fais mal?

Merci!

Répondre

3

Il devrait être

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

Il y avait un temps où '$ _POST ['var']' serait automatiquement exporté vers '$ var' – NullUserException

+1

Oui, ils ont cessé d'avoir l'option activée par défaut car elle est devenue l'une des menaces de sécurité les plus tristement célèbres sur l'ensemble de l'internet. – Teekin

+0

Merci! Ça a marché! – vlevsha

0

Vous êtes absent "session_id();" juste en dessous de "session_start();". Je ne sais pas pourquoi exactement c'est nécessaire, mais si je me souviens bien, c'est le cas.

+0

Ce n'est pas nécessaire – NullUserException

Questions connexes