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

    } 

Это мой код. Я хочу сделать страницу проверки для администратора, откуда он может проверить пользователей. Используя этот код, когда я активирую пользователя, он активирует всех пользователей. Я не знаю, как выйти из этого, а с переменными один за другим. Спасибо, я новичок в php: DСистема проверки правильности PHP и mysqli (процедурная)

+0

** ВНИМАНИЕ **: При использовании 'mysqli' вы должны использовать [параметризованные запросы] (http://php.net/manual/ ru/mysqli.quickstart.prepared-statements.php) и ['bind_param'] (http://php.net/manual/en/mysqli-stmt.bind-param.php), чтобы добавить данные пользователя в ваш запрос. ** НЕ ПРИНИМАЙТЕ ** использовать ручное экранирование и интерполяцию строк или конкатенацию, чтобы выполнить это, потому что вы создадите серьезные [SQL-инъекции ошибок] (http://bobby-tables.com/), если вы когда-нибудь забудете что-то избежать. – tadman

ответ

0

вам не нужно, чтобы выйти из этого времени, но вы делаете слишком много вещей, на что в то время цикла

Поскольку вы не указали действие в своей форме, форма должна быть отправлена ​​на страницу при отправке. вы можете отделить его.

так что вы можете добавить это в виде:

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 и дайте каждому пользователю отдельный идентификатор, такой как идентификаторы пользователя.

Вы можете использовать HTML выбрать или дать каждому пользователю строку с флажком

Затем положить код вне формы.

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

При использовании методы флажка можно активировать несколько пользователей одновременно с измененной функцией АКТИВИРУЙТЕ

Смежные вопросы