2014-01-31 3 views
0

Я попытался настроить сценарий, который, когда форма передает информацию в файл PHP, обновит таблицу MySQL. Но я пытался сделать так, чтобы он не обновлял базу данных, если сообщение пустое/пустое. Но это не обновление таблицы.PHP, таблица обновления MySQL

<?php 
$name = $_POST['name']; 
$email = $_POST['email']; 
$password = $_POST['password']; 
$nickname = $_POST['nickname']; 
$user = $_POST['user']; 

$enc_pass = md5($password); 

$con=mysqli_connect("","","",""); 
// Check connection 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 
if (!isset($name)){ 
mysqli_query($con,'UPDATE members SET name="$name" 
WHERE username="$user"'); 
} 
if(!$email == ""){ 
mysqli_query($con,'UPDATE members SET username="$email" 
WHERE username="$user"'); 
} 
if(!$password == ""){ 
mysqli_query($con,'UPDATE members SET password="$enc_pass" 
WHERE username="$user"'); 
} 
if(!$nickname == ""){ 
mysqli_query($con,'UPDATE members SET nickname="$nickname" 
WHERE username="$user"'); 
} 
mysqli_close($con); 
?> 

Я удалил учетные данные MySQL для обеспечения безопасности. Может ли кто-нибудь помочь мне с этим?

С уважением TameTimmah

+0

Вы не проверяете ошибки, поэтому никогда не узнаете, не удалось ли выполнить один из ваших запросов. См. [Catching Mysqli Errors] (http://stackoverflow.com/q/19193911) –

+0

Также я надеюсь, что вы не серьезно относитесь к использованию MD5 для паролей. – Idris

+0

Вы должны проверить, была ли форма отправлена, если (isset ($ _ POST ['submit'])) {ОТДЕЛЕНИЕ ВАШЕГО КОДА ЗДЕСЬ}; – Ant

ответ

3

Я думаю, что некоторая ваша логика неверна. Например:

if (!isset($name)) { 
    mysqli_query($con,'UPDATE members SET name="$name" WHERE username="$user"'); 
} 

Это говорит «если $name не установлено ни к чему, обновить имя в базе данных». $name всегда будет установлен в что-то, потому что вы инициализируете его в начале. Я думаю, что вам нужно больше вдоль линий:

if ($name != '')) { 
    mysqli_query($con,'UPDATE members SET name="$name" WHERE username="$user"'); 
} 

Однако, имейте в виду, что вы не проверяющего посланных данных, так что вы pront для атак путем внедрения SQL. Всегда обрабатывайте представленные данные как недостоверные и очищайте их перед тем, как делать что-либо в базе данных, например:

$name = mysqli_real_escape_string($_POST['name']; 
1

ваш код много плохого, но я исправил некоторые из них. попробуйте это

if (isset($name) and $name != ''){ 
     mysqli_query($con,'UPDATE members SET name="'.$name.'" 
          WHERE username="'.$user.'"'); 
        } 
    if($email != ""){ 
     mysqli_query($con,'UPDATE members SET username="'.$email.'" 
          WHERE username="'.$user.'"'); 
        } 
    if($password != ""){ 
     mysqli_query($con,'UPDATE members SET password="'.$enc_pass.'" 
          WHERE username="'.$user.'"'); 
        } 
    if($nickname != ""){ 
     mysqli_query($con,'UPDATE members SET nickname="'.$nickname.'" 
          WHERE username="'.$user.'"'); 
        } 
Смежные вопросы