2014-10-11 105 views
0

我在網站上有2個頁面;從URL獲取username,將其放入$_SESSION,並顯示該用戶所屬的組列表。會話未保存爲某些變量

當用戶選擇一個組時,該站點將轉到下一頁(group.php頁面),並在其URL中提供該組名稱以便在組頁面中使用該組名稱。

在羣組頁面中,有一個表單可以發送要顯示在羣組頁面中的消息(kindda就像Facebook牆,我猜)。

問題出在這裏:
在組列表頁面username被髮送到會話中; 羣組名稱被組頁面拾取後,我也將其發送到會話中, 但由於某種原因,當頁面到達if(isset($_POST['texts']))部分時,它會記住用戶名,但不記錄組名。

任何想法爲什麼是這樣?

以下是組頁面的代碼。

<?php 
    session_start(); 
    include_once("../connect.php"); 
    $username = $_SESSION['username']; 

    $result = mysqli_query($conn, "SELECT id FROM users WHERE username='$username'"); 
     while($row = mysqli_fetch_array($result)) { 
      $uid = $row['id']; 
     } 

    if(isset($_GET['groupname'])) { 
     $groupname = $_GET['groupname'];  
    } 

$result = mysqli_query($conn, "SELECT id FROM groups WHERE groupname='$groupname'"); 
     while($row = mysqli_fetch_array($result)) { 
      $gid = $row['id']; 
     } 

    $_SESSION['groupname'] = $groupname; 
    ?> 
    <!doctype html> 
    <html> 
    <head> 
     <meta charset="UTF-8"> 
    </head> 
    <body> 
    <form action= 
    <?php 
    echo "'group.php?id=" . $gid . "'"; 
    ?> method="post" name="newtext"> 
     <textarea name="texts" rows="4" cols="30"></textarea> 
     <input type="submit" id="subtext" name="submit" value="Submit" /> 
    </form> 

    <?php 
    //add text message 
    if(isset($_POST['texts'])){ 
     $texts = $_POST['texts']; 

     if($texts == "") { 
      echo "<script>alert('no message writen')</script>"; 
     }else{ 
      mysqli_query($conn, "INSERT INTO texts (`sender`, `sent`, `group`, `text`) 
         VALUES ('$uid', now(), '$gid', '$texts');"); 
      echo "<script>alert('message recieved!')</script>"; 
     } 
    } 
    ?> 
    </div> 
    </body> 
    </html> 
+1

你在做'group.php?id'不應該是'group.php?groupname'嗎? – 2014-10-11 20:14:02

+0

這應該用引號'action =「<?php echo」'group.php?id =「。$ gid。」'「;?>」''也可以。 – 2014-10-11 20:15:19

+0

您在session或url中使用保存組名? – 2014-10-11 20:21:16

回答

0

這是因爲在這種情況下$ _GET ['groupname']不再存在。

echo "'group.php?id=" . $gid . "'"; 

我不使用你$ _GET [ '身份證']什麼地方看到的,所以動作要

group.php?組名= GROUPNAME_HERE的 代替group.php?ID = 1

這應該工作:

<form action="group.php?groupname=<?php echo $groupname; ?>" method="post" name="newtext"> 

我還要補充的其他STA在這裏決定如果變量不存在,該怎麼辦。

if(isset($_GET['groupname'])) { 
    $groupname = $_GET['groupname'];  
} 
+0

結束,告訴頁面檢查兩個選項 – user3187759 2014-10-11 21:37:14