2012-04-03 57 views
0

我在这里有一个页面,它从前一页收到所有详细信息,并将其张贴在本页的数据库中。现在让我们说我有多个考试(可以说2个考试)。当我完成第一次考试的创建并将表格提交给自己后,我突然收到下面代码中所有$ _POSTs的通知。为什么在我的第一次考试后,我所有的$ _POST都会收到这些通知?所有通知都声明,所有那些在其前面带有$ _POST的索引都是未定义的。

下面是我的代码:

<?php 
session_start(); 

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

$_SESSION['id'] = $_POST['id']; 

} 


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

$_SESSION['dateChosen'] = $_POST['dateChosen']; 

} 

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

$_SESSION['timeChosen'] = $_POST['timeChosen']; 

} 


$username="xxx"; 
$password="xxx"; 
$database="xxx"; 

mysql_connect('localhost',$username,$password); 

mysql_select_db($database) or die("Unable to select database"); 

    $insert = array(); 

    for ($i = 1, $n = $_POST['sessionNum']; $i <= $n; ++$i) 
    { 
    $insert[] = "' ". mysql_real_escape_string($_POST['id']) . ($n == 1 ? '' : $i) . "',' ". mysql_real_escape_string($_POST['timeChosen']) . "',' ". mysql_real_escape_string(date("Y-m-d", strtotime($_POST['dateChosen']))) . "'"; 
    } 

    $sql = "INSERT INTO Session (SessionId, SessionTime, SessionDate) 
    VALUES (" . implode('), (', $insert) . ")"; 


    mysql_query($sql); 

mysql_close(); 



?> 
+0

显示您的HTML请。对于'$ _POST'来说,你必须提交表单'method ='post'' – 2012-04-03 03:43:28

+0

照顾才能发布第一页? – 2012-04-03 03:44:29

+0

很少有人这样做,但它是“正确”的方式 - 检查页面是否已经发布到,查看$ _SERVER ['REQUEST_METHOD']并确保它等于“POST”。 – 2012-04-03 04:18:01

回答

3

即使你做检查isset($_POST[variable])前面,你是不是在代码中的未来部分检查。

你不知道前面的检查是否已经通过或失败(仅成功,你写你的会话) - 你应该也许

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

    mysql_connect('localhost',$username,$password); 

    mysql_select_db($database) or die("Unable to select database"); 

     $insert = array(); 

     for ($i = 1, $n = $_POST['sessionNum']; $i <= $n; ++$i) 
     { 
     $insert[] = "' ". mysql_real_escape_string($_POST['id']) . ($n == 1 ? '' : $i) . "',' ". mysql_real_escape_string($_POST['timeChosen']) . "',' ". mysql_real_escape_string(date("Y-m-d", strtotime($_POST['dateChosen']))) . "'"; 
     } 

     $sql = "INSERT INTO Session (SessionId, SessionTime, SessionDate) VALUES (" . implode('), (', $insert) . ")"; 


     mysql_query($sql); 

    mysql_close(); 


} else { 
    //build the form which sends in ID 
} 

与您试图抢$ _ POST包住你的代码['id']不确定它存在吗?合理?

相关问题