2011-07-10 16 views
0

我正在嘗試使用POST的簡單表單,但無法將輸入傳遞到頁面。文件是「agenda.php」,代碼如下(最終形式部分):無法使用POST傳遞表單信息

<?php 
/* includes lib */ 
include_once("lib.php"); 
?> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" > 
<script type="text/javascript" src="lib.js"></script> 
<link href="schedulerStyle.css" rel="stylesheet" type="text/css"> 
<title>Scheduler</title> 
</head> 
<body> 
<div id="wrapper"> 
    <div id="box"> 
     <h2>Your Agenda</h2> 
     <?php 
     if(isset($_SESSION['name'])) 
     { 
      if(isset($_SESSION['meetingCode'])) 
      { 
       $firstDate = getFirstDate($_SESSION['meetingCode']); 
       if($firstDate != "") 
       { 
        echo "<h3>Organizing meeting starting from ".$firstDate."</h3>"; 
        ?> 

        <?php 
       } 
       else 
       { 
        unset($_SESSION['name']); 
        unset($_SESSION['meetingCode']); 
        header("Location: agenda.php"); 
       } 
      } 
      else 
      { 
       unset($_SESSION['meetingCode']); 
       header("Location: agenda.php"); 
      } 
     } 
     else 
     { 
      if(!isset($_POST['name']) || $_POST['name'] == "") 
      { 
      ?> 
      <form action="agenda.php" method="post" id="loginForm" 
        name="loginForm"> 
       <h3>Insert your name</h3> 
       <input type="text" title="Insert your name" maxlength="8" 
        size="8" id="name" name="name"> 
       <h3>Insert meeting password</h3> 
       <input type="password" title="Insert meeting password" 
        maxlength="8" size="8" id="meetingPassword" 
        name="meetingPassword"> 
       <br><br> 
       <input title="Login" type="submit" value="Login"> 
       <input title="Reset fields" type="reset"> 
       <a href="index.php"> 
       <input title="Go to homepage" type="button" value="Back"> 
       </a> 
      </form> 
      <?php 
      } 
      else 
      { 
       $meetingCode = checkUserIn($_POST['name'], $_POST['meetingPassword']); 
       if(is_int($meetingCode) && $meetingCode > 0) 
       { 
        $_SESSION['name'] = $_POST['name']; 
        $_SESSION['meetingCode'] = $meetingCode; 
       } 
       unset($_POST['name']); 
       unset($_POST['meetingPassword']); 
       header("Location: agenda.php"); 
      } 
     } 
     ?> 
    </div> 
</div> 
</body> 
</html> 

這段代碼的行爲是:

  • 它總是顯示形式
  • $ _ POST ['name']永遠不會設置

對於其他信息代碼不顯示問我,我會更新它。由於

僅供參考,lib.php如下:

<?php 
$hostDB = "localhost"; 
$userDB = "root"; 
$passDB = ""; 
$dataDB = "scheduler"; 

function printAlertScript($msg) 
{ 
    echo "<script type=\"text/javascript\"> 
      <!-- 
      alert(\"$msg\"); 
      //--> 
      </script>"; 
} 

function createRandPassword8Chars() 
{ 
    return substr(md5(rand()), 16, 8); 
} 

function createMeeting($meetingStartDate, $rangeN) 
{ 
    /* opens database connection */ 
    $conn = new mysqli($GLOBALS['hostDB'], $GLOBALS['userDB'], 
          $GLOBALS['passDB'], $GLOBALS['dataDB']); 
    if (mysqli_connect_errno()) 
    { 
     die("Connect failed: ".mysqli_connect_error()); 
    } 
    $query = "SELECT MAX(meetingCode) FROM meetings;"; 
    if(!$result = @$conn->query($query)) 
    { 
     die("Query error: " .$query."<br>"); 
    } 
    if($result->num_rows == 0) 
     $meetingCode = 0; 
    else 
    { 
     $item = $result->fetch_array(MYSQL_NUM); 
     $meetingCode = (int)$item[0]; 
     $meetingCode++; 
    } 
    @$result->close(); 

    printAlertScript("Meeting code assigned: $meetingCode"); 

    $pass = createRandPassword8Chars(); 

    printAlertScript("Password assigned: $pass"); 
    $GLOBALS['meetingPassword'] = $pass; 

    $range = $conn->real_escape_string($rangeN); 

    while($range > 0) 
    { 
     $meetingDate = date('Y-m-d', $meetingStartDate); 
     $query = "INSERT INTO meetings VALUES('$meetingCode', 
      '$meetingDate', '".md5($pass)."');"; 
     $meetingStartDate = $meetingStartDate + (60 * 60 * 24); 

     if(!$result = @$conn->query($query)) 
     { 
      die("Query error: " .$query."<br>"); 
     } 
     $range = $range - 1; 
    } 

    /* closes connection */ 
    @$conn->close(); 

    return $meetingCode; 
} 

function addUser($meetingCode, $userN) 
{ 
    /* opens database connection */ 
    $conn = new mysqli($GLOBALS['hostDB'], $GLOBALS['userDB'], 
          $GLOBALS['passDB'], $GLOBALS['dataDB']); 
    if (mysqli_connect_errno()) 
    { 
     die("Connect failed: ".mysqli_connect_error()); 
    } 
    $user = $conn->real_escape_string($userN); 
    $query = "INSERT INTO invites VALUES('$meetingCode', '$user');"; 

    if(!$result = @$conn->query($query)) 
    { 
     die("Query error: " .$query."<br>"); 
    } 
} 

function checkUserIn($nameN, $passwordN) 
{ 
    /* opens database connection */ 
    $conn = new mysqli($GLOBALS['hostDB'], $GLOBALS['userDB'], 
          $GLOBALS['passDB'], $GLOBALS['dataDB']); 
    if (mysqli_connect_errno()) 
    { 
     die("Connect failed: ".mysqli_connect_error()); 
    } 
    $name = $conn->real_escape_string($nameN); 
    $password = $conn->real_escape_string($passwordN); 
    $query = "SELECT meetings.meetingCode FROM meetings, invites 
       WHERE password='".md5($password)."' AND user='$name' 
       AND meetings.meetingCode = invites.meetingCode;"; 
    if(!$result = @$conn->query($query)) 
    { 
     die("Query error: " .$query."<br>"); 
    } 
    if($result->num_rows > 0) 
    { 
     $item = $result->fetch_array(MYSQL_NUM); 
     $meetingCode = $item[0]; 
     $result->close(); 
     return $meetingCode; 
    } 
    return ""; 
} 

function getFirstDate($meetingCode) 
{ 
    /* opens database connection */ 
    $conn = new mysqli($GLOBALS['hostDB'], $GLOBALS['userDB'], 
          $GLOBALS['passDB'], $GLOBALS['dataDB']); 
    if (mysqli_connect_errno()) 
    { 
     die("Connect failed: ".mysqli_connect_error()); 
    } 
    $query = "SELECT MIN(meetingDate) FROM meetings 
       WHERE meetingCode=$meetingCode;"; 
    if(!$result = @$conn->query($query)) 
    { 
     die("Query error: " .$query."<br>"); 
    } 
    if($result->num_rows > 0) 
    { 
     $item = $result->fetch_array(MYSQL_NUM); 
     $firstDate = $item[0]; 
     $result->close(); 
     return $firstDate; 
    } 
    return ""; 
} 

function getMeetingData($meetingCode) 
{ 
    /* opens database connection */ 
    $conn = new mysqli($GLOBALS['hostDB'], $GLOBALS['userDB'], 
          $GLOBALS['passDB'], $GLOBALS['dataDB']); 
    if (mysqli_connect_errno()) 
    { 
     die("Connect failed: ".mysqli_connect_error()); 
    } 
    $query = "SELECT * FROM meetings, invites 
     WHERE user='$nameE' AND pass='".md5($passE)."' 
     AND meetings.meetingCode=invites.meetingCode;"; 
    if(!$result = @$conn->query($query)) 
    { 
     die("Query error: " .$query."<br>"); 
    } 

} 

function getUserData($name, $pass) 
{ 
    /* opens database connection */ 
    $conn = new mysqli($GLOBALS['hostDB'], $GLOBALS['userDB'], 
          $GLOBALS['passDB'], $GLOBALS['dataDB']); 
    if (mysqli_connect_errno()) 
    { 
     die("Connect failed: ".mysqli_connect_error()); 
    } 
    if(strlen($name) > 0 && strlen($name) <= 8) 
    { 
     $nameE = @$conn->real_escape_string($name); 
     $passE = @$conn->real_escape_string($pass); 
     /* searches for meetings where user is invited */ 
     $query = "SELECT * FROM meetings, invites 
      WHERE user='$nameE' AND pass='".md5($passE)."' 
      AND meetings.meetingCode=invites.meetingCode;"; 
     if(!$result = @$conn->query($query)) 
     { 
      die("Query error: " .$query."<br>"); 
     } 
     @$result->close(); 
    } 
    /* closes connection */ 
    @$conn->close(); 

    return; 
} 
?> 

也addUser.php,在同一目錄下,並用相同的文件包括具有類似的形式工作正常:

<?php 
/* includes lib */ 
include_once("lib.php"); 

global $meetingPassword; 

/* if it is the first time tries to create the meeting */ 
if(isset($_POST['monthInput']) && isset($_POST['dayInput']) 
    && isset($_POST['yearInput']) && isset($_POST['daysRange']) 
    && isset($_POST['usernameInput'])) 
{ 
    $unixTime = mktime(0,0,0, $_POST['monthInput'], 
         $_POST['dayInput'], $_POST['yearInput']); 
    if($unixTime === false || $unixTime < time()) 
    { 
     printAlertScript("Unable to use date"); 
     header("Location: index.php"); 
    } 
    $meetingCode = createMeeting($unixTime, $_POST['daysRange']); 
    if(isset($meetingCode) && is_int($meetingCode) && $meetingCode >= 0) 
    { 
     addUser($meetingCode, $_POST['usernameInput']); 
     $_SESSION['name'] = $_POST['usernameInput']; 
     $_SESSION['meetingCode'] = $meetingCode; 
    } 
    else 
     header("Location: index.php"); 
    unset($_POST['monthInput']); 
    unset($_POST['dayInput']); 
    unset($_POST['yearInput']); 
    unset($_POST['daysRange']); 
    unset($_POST['usernameInput']); 
} 
/* if someone has been invited */ 
if(isset($_POST['friendInput']) && isset($_SESSION['meetingCode'])) 
{ 
    addUser($_SESSION['meetingCode'], $_POST['friendInput']); 
    unset($_POST['friendInput']); 
} 
?> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" > 
<script type="text/javascript" src="lib.js"></script> 
<link href="schedulerStyle.css" rel="stylesheet" type="text/css"> 
<title>Scheduler</title> 
</head> 
<body> 
<div id="wrapper"> 
    <div id="box"> 
     <h2>Invite people</h2> 
     <h3>Password is <?php echo $GLOBALS['meetingPassword']; ?></h3> 
     <h3>Write username of a friend</h3> 
     <form action="addUser.php" method="post" id="addForm" name="addForm"> 
      <input type="text" title="Insert a friend's name" maxlength="8" 
       size="8" id="friendInput" name="friendInput"> 
      <input type="submit" title="Add user to invite list" value="Add"> 
      <a href="agenda.php"> 
      <input type="button" title="I finished inviting" value="Done"> 
      </a> 
     </form> 
    </div> 
</div> 
</body> 
</html> 

另外,如果我嘗試引用POST變量我得到

Notice: Undefined index: name in C:\xampp\htdocs\home\agenda.php 
我使用的XAMPP 1.7.4 [PHP

:5.3。 5]在Windows 7上

+0

您發佈的文件的名稱是什麼? – genesis

+0

對不起,我忘了它「agenda.php」 – gc5

回答

1

您是否檢查過以確保lib.php不會干擾?我把這個腳本放在我的網站上:http://vapor.ne8us.com/stacks/agenda.php。這工作得很好,它在checkUser中斷了,它應該。我猜lib.php是干擾,或者.js文件是,或者php沒有在您的服務器上正確設置。

+0

謝謝:)現在我將檢查它 編輯:我很確定這不是問題,因爲我有相同的目錄中的另一個文件中包含相同的包括那個我沒有問題。 – gc5

+0

如果您將源文件發佈到lib.php,我也會仔細查看。 – Vap0r

+0

好的..我會更新它 – gc5