2016-05-08 15 views
-2
function activate($con, $email){ 
    $email = mysqli_real_escape_string($con, $email); 
    return mysqli_query($con, "UPDATE `users` SET `active` = 1 WHERE `email` = '".$email."'"); 
} 

if($role == 'Administrator'){ 
     $query = mysqli_query($con, "SELECT * FROM `users` WHERE `active` = 0"); 
     if(mysqli_num_rows($query) > 0){ 
      while($row = mysqli_fetch_assoc($query)){ 
       $email = $row['email']; 
       $name = $row['name']; 
       $surname = $row['surname']; 
       echo $name . ' ' . $surname . ' - ' . $email . '<form method="post"><input type="submit" name="activate" value="Activeaza"></form></br>'; 
       if(isset($_POST['activate'])) 
       activate($con, $email); 
      }   
     } 

    } 

これは私のコードです。私は彼がユーザーを検証できるところからadminのための確認ページを作りたいと思う。このコードを使用してユーザーをアクティブ化すると、すべてのユーザーがアクティブになります。私はどのように変数を一つずつ出して終了するのか分かりません。ありがとう、私はPHPの初心者です:D管理者検証システムPHPおよびmysqli(手続き型)

+0

**警告**:mysqliを使用する場合は、[パラメータ化されたクエリ](http://php.net/manual/)を使用する必要があります。クエリにユーザーデータを追加するには、[/ bind/**正しくエスケープするのを忘れた場合、重大な[SQLインジェクションのバグ](http://bobby-tables.com/)を作成するため、手動エスケープと文字列補間または連結を使用しないでください。 – tadman

答えて

0

で一度に複数のユーザーをアクティブにすることができ、チェックボックスのメソッドを使用している場合は、その中を終了する必要がいけない、しかし、あなたはそのwhileループ

にあまりにも多くのことをやっています

フォームにアクションを指定していないため、フォームは送信時にページ自体に送信する必要があります。それを分けることができます。

echo $name . ' ' . $surname . ' - ' . $email . '<form method="post"> 
<input type="submit" name="activate" value="Activeaza"> 
<input type="hidden" name="email" value=\"'. $email . \"'> 
</form></br>'; 

をし、コードの先頭にこれを追加します:

ので、あなたのフォームでこれを追加することができ、これはこれを参照してください隠された入力タイプについての詳細を知るために を助け

if ($SERVER['REQUEST_METHOD'] == 'POST') 
{ 
    $email = $_POST['email']; 
    activate($con,$email); 
} 

希望リンク:
https://www.w3.org/TR/html-markup/input.hidden.html

0

フォームを作成してユーザーごとに1フォームを作成し、すべてのユーザーをwhileループでフォームに入力し、各ユーザーにユーザーIDなどの個別の識別子を付けます。

あなたはその後、フォームの外にあなたのコードを入れてHTMLを選択し使用するか、チェックボックス

で各ユーザーに行を与えることができます。

if(isset($_POST['activate']))  
activate($con, $email); 

あなたが変更され、アクティベート機能