2016-04-06 2 views
0

Работа с моей базой данных работает; таблица «Пользователь» не будет обновляться, если уже зарегистрирован пользователь. Однако моя переменная $ error_message не отображает строку сообщения об ошибке. Вот мой код:error_message переменная, не отображающая строковое значение в форме submit

HTML/PHP:

// Collect and validate user inputs 
if($_SERVER["REQUEST_METHOD"] == "POST") { 
    session_start(); 
    $forename = trim(filter_input(INPUT_POST,"user_forename",FILTER_SANITIZE_STRING)); 
    $surname = trim(filter_input(INPUT_POST,"user_surname",FILTER_SANITIZE_STRING)); 
    $gender = trim(filter_input(INPUT_POST,"user_gender",FILTER_SANITIZE_STRING)); 
    $email = trim(filter_input(INPUT_POST,"user_email",FILTER_SANITIZE_EMAIL)); 
    $password = trim(filter_input(INPUT_POST,"user_password")); 
    $city = trim(filter_input(INPUT_POST,"user_city")); 
    $team = trim(filter_input(INPUT_POST,"user_team",FILTER_SANITIZE_STRING)); 
    $bio = trim(filter_input(INPUT_POST,"user_bio",FILTER_SANITIZE_SPECIAL_CHARS)); 
    $human = trim(filter_input(INPUT_POST,"user_human",FILTER_SANITIZE_STRING)); 

    $userExist = mysql_query("SELECT * FROM User WHERE U_Email='$email'"); 

    if($forename == "" || $surname == "" || $email == "" || $password == "" 
|| $city == "" || $team == "" || $bio == "" || $human == "") { 
    $error_message = "Please fill in all form fields"; 
    } 

    if (!isset($error_message) && !filter_var($email, FILTER_VALIDATE_EMAIL)) { 
    $error_message = "$email is a not a valid email address"; 
    } 

    if (!isset($error_message) && (mysql_num_rows($userExist) > 0)) { 
    $error_message = "$email is already taken!"; 
    } 

    if(!isset($error_message)) { 
     $sql = $db->query("INSERT INTO User (U_Forename, U_Surname, U_Gender, U_Email, U_Password, U_City, U_Team, U_Biography) 
     VALUES('{$forename}', '{$surname}', '{$gender}', '{$email}', '{$password}', '{$city}', '{$team}', '{$bio}')"); 

     // header('Location: index.php'); 
    } 
} 

    <div class="wrapper"> 
      <h1>Register, it's free!</h1> 
      <div> 
      <?php 
      if (isset($error_message)) { 
       echo "<h2>".$error_message."</h2>"; 
      } 
      ?> 
      </div> 

сообщение об ошибке не будет отображаться после того, как форма была отправлена. Более того, я не получаю никаких ошибок PHP, поэтому я не уверен, в чем проблема.

Любые предложения были бы замечательными.

Спасибо, Джеймс.

+0

, пожалуйста, используйте MySQLi вместо MySQL. Но это не причина. –

+0

и просто распечатать все переменные. –

+0

[Little Bobby] (http://bobby-tables.com/) говорит, что [ваш скрипт подвержен риску инъекций SQL.] (Http://stackoverflow.com/questions/60174/how-can-i-prevent -SQL-инъекция-в-РНР). –

ответ

2

Пожалуйста, помните о mysqli и sql-инъекции.

Это расширение было устарело в PHP 5.5.0, и оно было удалено в PHP 7.0.0. Вместо этого расширение MySQLi или PDO_MySQL должно быть .

mysqli::real_escape_string - mysqli_real_escape_string - Сбрасывает специальные символы в строке для использования в выражении SQL, принимая с учетом текущей кодировки соединения.

Примечание :: что если соединение не открыто, mysqli_real_escape_string() вернет пустую строку!

SQL-инъекция - это метод, при котором злоумышленники могут вводить команды SQL в инструкцию SQL через ввод веб-страницы.

Введенные команды SQL могут изменять инструкцию SQL и компрометировать безопасность веб-приложения .

<?php 
    /* Attempt MySQL server connection. Assuming you are running MySQL 
    server with default setting (user 'root' with no password) */ 
    $conn = mysqli_connect("localhost", "root", "", "demo"); 

    // Check connection 
    if($conn === false){ 
     die("ERROR: Could not connect. " . mysqli_connect_error()); 
    } 


    if(isset($_POST['user_forename']) && strlen(trim($_POST['user_forename']) > 0)) 
{ 

} 
else 
{ 
    $error_message = "Please enter forename"; 
} 

if(isset($_POST['user_surname']) && strlen(trim($_POST['user_surname']) > 0)) 
{ 
    $surname = trim($_POST['user_surname']); 
} 
else 
{ 
    $error_message = "Please enter surname"; 
} 

if(isset($_POST['user_gender']) && strlen(trim($_POST['user_gender']) > 0)) 
{ 
    $gender = trim($_POST['user_gender']); 
} 
else 
{ 
    $error_message = "Please enter gender"; // if it is an input field. 
} 


if(isset($_POST['user_email']) && strlen(trim($_POST['user_email']) > 0)) 
{ 
    if(filter_var(trim($_POST['user_email']), FILTER_VALIDATE_EMAIL)) 
{ 
    $mail = trim($_POST['user_gender']); 
} 
else 
{ 
    $error_message = "Please enter valid email"; 
} 
} 
else 
{ 
    $error_message = "Please enter email"; 
} 

if(isset($_POST['user_password']) && strlen(trim($_POST['user_password']) > 0)) 
{ 
    $password = trim($_POST['user_password']); 
} 
else 
{ 
    $error_message = "Please enter password"; 
} 

if(isset($_POST['user_city']) && strlen(trim($_POST['user_city']) > 0)) 
{ 
    $city = trim($_POST['user_city']); 
} 
else 
{ 
    $error_message = "Please enter city"; 
} 

if(isset($_POST['user_bio']) && strlen(trim($_POST['user_bio']) > 0)) 
{ 
    $bio = trim($_POST['user_bio']); 
} 
else 
{ 
    $error_message = "Please enter Biography"; 
} 


    // Escape user inputs for security 
    $forename = mysqli_real_escape_string($conn, $forename); 
    $surname = mysqli_real_escape_string($conn, $surname); 
    $gender = mysqli_real_escape_string($conn, $gender); 
    $email = mysqli_real_escape_string($conn, $email); 
    $password = mysqli_real_escape_string($conn, $password); 
    $city = mysqli_real_escape_string($conn, $city); 
    $team = mysqli_real_escape_string($conn, $team); 
    $bio = mysqli_real_escape_string($conn, $bio); 


// checking existing email 

    if ($emailcheckquery = mysqli_query($conn, "SELECT * FROM User WHERE U_Email='$email'")) 
{ 
    if(mysqli_num_rows($emailcheckquery) > 0) 
    { 
     $error_message = "email is already taken!"; 
    }  
} 

if(!isset($error_message)) 
{ 
    // attempt insert query execution 
    $insertsql = "INSERT INTO persons (U_Forename,U_Surname,U_Gender, U_Email,U_Password,U_City,U_Team,U_Biography) VALUES ('$forename', '$surname','$gender',$email,$password,$city,$team,$biography)"; 
    if(mysqli_query($conn, $sql)){ 
     echo "Records added successfully."; 
    } else{ 
     echo "ERROR: Could not able to execute $sql. " . mysqli_error($link); 
    } 
} 


    // close connection 
    mysqli_close($conn); 
    ?> 






    <div class="wrapper"> 
    <h1>Register, it's free!</h1> 
     <div> 
       <?php 
       if (isset($error_message)) { 
        echo "<h2>".$error_message."</h2>"; 
       } 
       ?> 
     </div> 
    </div> 
Смежные вопросы