2016-05-08 9 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); 
      }   
     } 

    } 

Dies ist mein Code. Ich möchte eine Validierungsseite für den Administrator erstellen, von der aus er die Benutzer validieren kann. Wenn ich diesen Code aktiviere, werden alle Benutzer aktiviert. Ich weiß nicht, wie ich das mit Variablen nacheinander beenden soll. Danke, ich bin Anfänger in PHP: DAdmin Validierung System PHP und MySQL (prozedurale)

+0

** WARNUNG **: Wenn Sie 'mysqli' verwenden, sollten Sie [parametrisierte Abfragen] verwenden (http://php.net/manual/ de/mysqli.quickstart.prepared-statements.php) und ['bind_param'] (http://php.net/manual/en/mysqli-stmt.bind-param.php), um Benutzerdaten zu Ihrer Anfrage hinzuzufügen. ** Verwenden Sie ** NICHT ** manuelles Escapen und String-Interpolation oder Verkettung, um dies zu erreichen, weil Sie schwerwiegende [SQL-Injektionsfehler] (http://bobby-tables.com/) erstellen werden, wenn Sie jemals vergessen, etwas richtig zu entkommen. – tadman

Antwort

0

Sie, dass während verlassen nicht aktivieren müssen, aber Sie tun, zu viel Dinge auf dieser while-Schleife

Da Sie die Aktion in Ihrem Formular nicht angegeben haben, muss das Formular beim Übermitteln an die Seite selbst gesendet werden. Sie können es trennen.

so können Sie dies in Ihrem Formular hinzufügen:

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

Und dies Ihren Code am Anfang hinzu:

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

Hoffnung dieses mehr über versteckten Eingabetyp zu wissen, hilft sieht diese link:
https://www.w3.org/TR/html-markup/input.hidden.html

0

Anstatt erstellen ein Formular pro Benutzer erstellen 1 Formular und geben Sie alle Benutzer in das Formular mit der While-Schleife und geben Sie jedem Benutzer eine eindeutige Kennung wie Benutzer-IDs.

könnten Sie HTML auswählen oder jedem Benutzer eine Zeile geben, mit einem Kontrollkästchen

Dann wird Ihr Code außerhalb des Formulars setzen.

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

Wenn Sie das Kontrollkästchen Methode verwenden, können Sie mehrere Benutzer gleichzeitig mit einer modifizierten activate Funktion