2017-09-26 3 views
0

Mon objectif est de comparer oldwifi name, oldwifipassword avec inputbox1 et input box2.Je veux permettre à l'utilisateur de changer le nom et le mot de passe wifi uniquement après avoir confirmé le wifiname et le mot de passe.PHP my sql valeur de la zone de texte comparée avec la valeur du champ de base de données

Voici mon code.

<html> 
<body> 
<?php 
$con = mysql_connect("localhost","user","password"); 
$oldwifi = mysql_real_escape_string($_POST['oldwifi']); 
$oldpass = mysql_real_escape_string($_POST['oldpass']); 
$sql="UPDATE test SET dboldwifi = '".$oldwifi."',dboldpass = '".$oldpass."'WHERE id = '1'"; 
mysql_select_db("test", $con); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 
else if(mysql_query($sql)&&strcmp($oldwifi,'dboldwifi')==0&&strcmp($oldpass,'dboldpass')==0) 
    { 
     echo "New wifi and password saved successfully !"; 
    } 
else 
{ 
     echo "Old credentials mismatch"; 
     die('Error: ' . mysql_error()); 
} 
mysql_close($con); 
?> 
</body> 
</html> 

Ma base de données:

mysql> select * from test; 
+-----------+-----------+----+ 
| dboldwifi | dboldpass | id | 
+-----------+-----------+----+ 
| Tarzan | Jane  | 1 | 
+-----------+-----------+----+ 

Code HTML

<html> 

<body> 

<h1>A small example page to insert some data in to the MySQL database using PHP</h1> 

<form action="insert.php" method="post"> 

Firstname: <input type="text" name="oldwifi" /><br><br> 

Lastname: <input type="text" name="oldpass" /><br><br> 



<input type="submit" /> 

</form> 

</body> 
</html> 

Résultat de sortie: Old pouvoirs mismatchError:

Je suis débutant en php mysql besoin d'aide là où je fais mal !

ci-dessous fonctionne Code lorsque j'essaie d'insérer des données;

<html> 
<body> 
<?php 
$con = mysql_connect("localhost","user","password"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 
mysql_select_db("test", $con); 

$sql="INSERT INTO test (dboldwifi, dboldpass)VALUES ('$_POST[oldwifi]','$_POST[oldpass]')"; 
if (!mysql_query($sql,$con)) 
    { 
    die('Error: ' . mysql_error()); 
    } 
echo "1 record added"; 
mysql_close($con) 
?> 
</body> 
</html> 

Merci!

+0

** ATTENTION **: Si vous êtes juste PHP apprendre, s'il vous plaît, ne pas apprendre obsolète [ 'mysql_query'] (http://php.net/manual/ en/function.mysql-query.php) interface. C'est horrible et a été supprimé en PHP 7. Un remplacement comme [PDO n'est pas difficile à apprendre] (http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo- for-database-access /) et un guide comme [PHP The Right Way] (http://www.phptherightway.com/) permet d'expliquer les meilleures pratiques. Assurez-vous que ** vos ** paramètres d'utilisateur sont [correctement échappés] (http://bobby-tables.com/php) ou vous vous retrouverez avec de graves [bogues d'injection SQL] (http://bobby-tables.com/). – tadman

+0

Étant donné que les étiquettes sont ici prénom/nom et je ne peux que supposer que vous adaptez une sorte de script existant, ** NE PAS ** utiliser ce code comme base. C'est ancien et plein de dangers potentiels. – tadman

+0

merci pour la réponse tadman! oui je suis quelques scripts existants comme je vous l'ai dit je suis débutant. Je vais essayer d'apprendre le PDO mais pour l'instant s'il vous plaît ignorer les étiquettes et laissez-moi savoir s'il y a une solution à ma question. –

Répondre

0

Ce code est très mauvais et l'ordre des opérations est erroné. Essayez de nettoyer votre code et il sera plus facile de déboguer.

elseif(mysql_query($sql)&&strcmp($oldwifi,'dboldwifi')==0&&strcmp($oldpass,'dboldpass')==0)

C'est littéralement dire:

if (updateTheRow && noDifferenceWifi && noDifferentPwd) 

Ce que vous voulez dire est:

if (noDifferenceWifi && noDifferentPwd) { 
    updateTheRow 

De plus, vous comparez ce que l'utilisateur est entré à la chaîne littérale 'dboldwifi'.

Essayez ceci:

<?php 
// Set up your connection here. You can also put this in a config file 
// but the whole point is to get access to the $pdo variable. 
// See line 17 
$host = '127.0.0.1'; 
$db = 'test'; 
$user = 'root'; 
$pass = ''; 
$charset = 'utf8'; 

$dsn = "mysql:host=$host;dbname=$db;charset=$charset"; 
$opt = [ 
    PDO::ATTR_ERRMODE   => PDO::ERRMODE_EXCEPTION, 
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, 
    PDO::ATTR_EMULATE_PREPARES => false, 
]; 
$pdo = new PDO($dsn, $user, $pass, $opt); 

// Don't need to escape because PDO is awesome 
$oldwifi = $_POST['oldwifi']; 
$oldpass = $_POST['oldpass']; 

// Now use that $pdo variable in your application to query, update, delete etc. 
$stmt = $pdo->query('SELECT 1 FROM test WHERE dboldwifi=? AND dboldpass=?'); 
$stmt->execute([$oldwifi, $oldpass]); 
$match = $stmt->fetchColumn(); 

if ($match) { 
    // Now update your row here using PDO. 
    // https://phpdelusions.net/pdo#dml 
} 
+0

Merci beaucoup pour votre temps Mr waterloomatt. Laissez-moi essayer votre code. il m'a donné une image claire maintenant mais encore AOP est nouveau pour moi .. Toujours merci –