2014-07-11 18 views
1

我的html此頁面mysql表PHP只有第一個入口進入,即使修正是用來

<html> 
<body> 

<form action="new_group.php" method="post"> 

<div> 
<label for="group_name">Group Name: </label> 
<input type="text" name="group_name" id="group_name" /> 
</div> 

<div> 
<label for="invites">Invite...</label> 
<input type="text" name="invites" id="invites" /> 
</div> 

<div> 
<label for="description">Description: </label> 
<textarea name="description" id="description"></textarea> 
</div> 

<div> 
<input type="submit" value="Create" /> 
</div> 

</form> 

</body> 
</html> 

,然後有這個PHP:

<?php 
include "function_inc.php"; 
if(isset($_POST['group_name'], $_POST['description'], $_POST['invites'])){ 
    $invites = explode(',', $_POST['invites']); 
    $user_id = $_SESSION['user_id']; //avoids issues with quotations (either invalid quotation for referring to PHP variable or repeated double quotes) 
    $result = mysqli_query($link, "SELECT `username` FROM `users` WHERE `user_id` = '$user_id'"); 
    foreach($result as $resul){ 
     foreach($resul as $resu){ 
      $logged_in_username = $resu; 
     }} 
    if(in_array($logged_in_username, $invites)){ 
    }else{ 
     $invites[] = $logged_in_username; 
    } 

    foreach($invites as $invite) { 
     $invite = trim($invite); 
     echo $invite . '<br />'; 
     $idres = mysqli_query($link, "SELECT `user_id` FROM `users` WHERE `username` = '$invite'"); 
     if(mysqli_num_rows($idres) == 0) { 
      exit("1 or more of the users that you entered do(es) not exist!"); 
     } 
    } 
    create_group($_POST['group_name'], $_POST['description'], $invites); 
} 
?> 

,這是create_group功能:

function create_group($name, $description, $invites){ 
    global $link; 
    $name = mysqli_real_escape_string($link, $name); 
    $description = mysqli_real_escape_string($link, $description); 
    $names = mysqli_query($link, "SELECT `group_name` FROM `groups` WHERE `group_name` = '$name'"); 
    $descriptions = mysqli_query($link, "SELECT `group_description` FROM `groups` WHERE `group_description` = '$description'"); 
    if(mysqli_num_rows($names) == 0 && mysqli_num_rows($descriptions) == 0) { 
     mysqli_query($link, "INSERT INTO `groups` (`group_name`, `group_description`) VALUES ('$name', '$description')"); 
    } else { 
     echo 'Group with that name/description already exists.'; 
    } 

    $result = mysqli_query($link, "SELECT `group_id` FROM `groups` WHERE `group_name` = '$name'"); 

    foreach($result as $resul) { 
     foreach($resul as $resu) { 
      $group_id = $resu; 
     } 
    } 
    foreach($invites as $invite) { 
     $idres = mysqli_query($link, "SELECT `user_id` FROM `users` WHERE `username` = '$invite'"); 
     foreach($idres as $idarr) { 
      foreach($idarr as $id) { 
       mysqli_query($link, "INSERT INTO `group_members` (`group_id`, `user_id`, `confirmed?`) VALUES ('$group_id', '$id', 0)"); 
      } 
     } 
    } 
    echo 'Group created!'; 
} 

我對此感到困惑的是:如果我創建一個組(用於測試目的)並且包含我的(當前用戶登錄的)名稱,並有逗號,但沒有空格,一切工作正常。但是,如果我做的完全一樣,但是我有空格,只有數組中的第一個名字輸入group_members。正如你所看到的,有一個微調聲明。

我不知道這是爲什麼。任何幫助將非常感謝,因爲我是PHP的初學者。

預先感謝您

+0

可愛[sql注入攻擊](http://bobby-tables.com)漏洞。享受讓你的服務器pwn3d ... –

+0

@Marc B抱歉是一個n00b。我知道SQL注入是什麼,但這些漏洞究竟在哪裏 – Petrus

+0

讀取我鏈接到的網站。它會解釋一切。 –

回答

1

在代碼:

foreach ($invites as $invite) { 
    $invite = trim($invite); 
    ... 
} 

可變$invite是從陣列元件分開。分配給該變量不會修改數組的內容。可以通過使用參考解決此:

foreach ($invites as &$invite) { 
    $invite = trim($invite); 
    ... 
} 

&前綴使得$invite參考變量,即對於該陣列元件的別名。現在,分配給變量更新它引用的數組元素。

+0

謝謝你再次幫助我! – Petrus

+0

我是9代表能夠upvote你 – Petrus

+0

只要接受答案,不要擔心投票。 – Barmar

相關問題