2017-03-24 2 views
-1

Deux problèmes se produisent lorsque nous téléchargeons des fichiers sur 000Webhost. Nous avons utilisé 000Webhost pour héberger une base de données pour notre projet d'application de conseil. Le code du projet peut être trouvé sur Github. Mon partenaire a téléchargé deux fichiers php sur 000Webhost mais il a eu deux erreurs, nous ne savons pas comment le résoudre. Voici nos codes PHP.Deux problèmes dans mes codes php, un dans Login.php, un dans le code Register.php

codes Github pour Android: Studio de https://github.com/swiftandquick/AdvisingApp

register.php

<?php 
    $con = mysqli_connect("localhost", "id951876_advisingappadmin", "abc12345", "id951876_advisingapp"); 
if (!$con) { 
die('connect error: '.mysqli_connect_error()); 
} 
$username= mysql_real_escape_string($con,$_POST['username']); 
$password= $_POST['password']; 

$confirm_password= $_POST['password']; 
$name= (isset($_POST['name'])) ? $_POST['name'] : ''; 
$email= (isset($_POST['email'])) ? $_POST['email'] : ''; 
$major= (isset($_POST['major'])) ? $_POST['major'] : ''; 
$starting_year = (isset($_POST['starting_year'])) ? $_POST['starting_year'] : ''; 
$status= (isset($_POST['status'])) ? $_POST['status'] : ''; 
$statement = mysqli_prepare($con, "INSERT INTO user (username, password, confirm_password, name, email, major, starting_year, status) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"); 
    mysqli_stmt_bind_param($statement, "ssssssis", $username, $password, $confirm_password, $name, $email, $major, $starting_year, $status); 
    mysqli_stmt_execute($statement); 

    $response = array(); 
    $response["success"] = true; 

    echo json_encode($response); 
?> 

erreurs dans register.php:

Uncaught Error: Call to undefined function mysql_real_escape_string() in /storage/h4/876/951876/public_html/Login.php:4 Stack trace: #0 {main} thrown in /storage/h4/876/951876/public_html/Login.php on line 4 

login.php

<?php 
    $con = mysqli_connect("localhost", "id951876_advisingappadmin", "abc12345", "id951876_advisingapp"); 

$username= mysql_real_escape_string($con,$_POST['username']); 
$password= $_POST['password']; 

    $statement = mysqli_prepare($con, "SELECT * FROM user WHERE username = ? AND password = ?"); 
    if(!statement) 
      echo "error:"; 
    else 
    { 
    mysqli_stmt_bind_param($statement, "ss", $username, $password); 
    mysqli_stmt_execute($statement); 

    mysqli_stmt_store_result($statement); 
    mysqli_stmt_bind_result($statement, $user_id, $username, $password, $confirm_password, $name, $email, $major, $starting_year, $status); 

    $response = array(); 
    $response["success"] = false; 

    while(mysqli_stmt_fetch($statement)){ 
     $response["success"] = true; 
     $response["username"] = $username; 
     $response["password"] = $password; 
     $response["confirm_password"] = $confirm_password; 
     $response["name"] = $name; 
     $response["email"] = $email; 
     $response["major"] = $major; 
     $response["starting_year"] = $starting_year; 
     $response["status"] = $status; 
    } 
    } 
    echo json_encode($response); 
?> 

erreurs de login.php:

Uncaught Error: Call to undefined function mysql_real_escape_string() in /storage/h4/876/951876/public_html/Register.php:6 Stack trace: #0 {main} thrown in /st 

TL; DR:

Lire les codes ci-dessus.

erreur login.php à la ligne 4.

erreur register.php à la ligne 6.

Quelqu'un veut aider?

+1

changement cette '' mysql_real_escape_string' à Mysqli mysqli_real_escape_string' vous ne pouvez pas mélanger '' mysql' et mysqli' – Mario

+0

les deux lignes ont les mêmes choses en commun que tous ces messieurs ont souligné. changez la fonction et cela fonctionnera. – shazyriver

+0

Ne pas échapper lors du paramétrage. Hash les mots de passe de votre utilisateur – chris85

Répondre

-1

Les fonctions mysql_ * sont obsolètes depuis PHP 5.5 et ont complètement disparu en PHP 7, ce qui semble être la version que vous utilisez.

Utilisez plutôt PDO.

-1
$username= mysql_real_escape_string($con,$_POST['username']); 

mysql_real_escape_string est dépréciée depuis un certain temps, étant donné que PHP 5.5 et supprimé tout à fait en PHP 7. Si vous utilisez PHP 7 sur votre serveur, qui pourrait certainement expliquer l'erreur de fonction non définie à la fois register.php et login.php (consultez http://php.net/manual/en/function.mysql-real-escape-string.php)

Je vous conseille d'aller à PDO, mais vous pouvez remplacer mysql_real_escape_string avec mysqli_real_escape_string (http://php.net/manual/en/mysqli.real-escape-string.php) pour une solution rapide.

$username = mysqli_real_escape_string($con, $_POST['username']); 

Si vous n'êtes pas sûr de quelle version de PHP que vous utilisez, vous pouvez créer un nouveau fichier PHP et il suffit d'ajouter:

<?php phpinfo(); 

à elle. Lorsque vous visitez cette page, vous verrez la version et toutes les variables d'environnement/configuration. Ou ajoutez-le au début d'un fichier existant temporairement.

-1

mysql_real_escape_string() La fonction est dépréciée en PHP5.5 et complètement supprimée sur PHP7. (find more here)

Donc, veuillez vérifier votre version de PHP sur le serveur web.

Il faut donc utiliser soit inférieure à:

$username = mysqli_real_escape_string($con,$_POST['username']); 

OU

$username = $con->real_escape_string($username);