我有一个用户列表和带有输入框的页面更改信息是旧值 然后点击发送它需要更改值。 它什么都不做 (对不起我的英文)
这是editInfo.php:
<?php
session_start();
$connect = mysql_connect("host", "username", "password");
mysql_select_db("databasse");
if(!$connect) { die("החיבור כשל"); }
?>
<?php
if(isset($_SESSION['username'])) {
$sql = mysql_query("SELECT * FROM `user` WHERE `Username` = '".$_SESSION['username']."'; ");
while($info = mysql_fetch_array($sql)) {
$ID = $info["ID"];
printf("
<form action='editInfo.php' method='post'>
שם משתמש: <input type='username' name='username' value='%s'/> <br>
סיסמה חדשה: <input type='password' name='password' value=''/> <br>
שם: <input type='text' name='name' value='%s'/> <br>
אימייל: <input type='email' name='email' value='%s'/> <br>
<input type='submit' name='change' value='עדכן' />
</form>", $info["Username"], $info["Name"], $info["Email"]);
$newUsername = $_POST['username'];
$newPassword = $_POST['password'];
$newName = $_POST['name'];
$newEmail = $_POST['email'];
$chagne = $_POST['change'];
if(isset($change)) {
$changeCode = "UPDATE `users`.`user` SET `Name` = '$newName', `Username` = '$newUsername', `Password` = '$newPassword', `Email` = '$newEmail' WHERE `user`.`Username` = '".$info["username"]."';";
$changeQuery = mysql_query($changeCode);
$runIt = mysql_num_rows($changeQuery);
if(!$runIt) {
echo 'לא הצלחנו לשנות את הפרטים';
}
else {
echo 'פרטים עודכנו בהצלחה';
}
}
}
}
?>
答案 0 :(得分:1)
你有一个错字。首先设置一个变量:
$chagne = $_POST['change'];
然后检查另一个变量:
if(isset($change)) {
在此代码中,永远不会设置$change
。所以if
语句总是错误的。
另外,请注意您的代码 非常容易受到SQL注入 。看看here,了解这意味着什么。但最重要的是,您目前正在执行用户输入作为代码,它允许任何用户在您的数据库上执行任何代码。正确方向的重要一步是使用prepared statements而不是字符串连接来构建查询。
此外,您以纯文本格式存储用户密码。这对您的用户 严重不负责任 。您基本上是在收集人们的密码并将其存储在高度不安全的数据库中。请了解如何正确散列密码,以便无法检索它们。
答案 1 :(得分:1)
你变量:
$chagne = $_POST['change'];
将$ change替换为$ change
和你的if:
if(isset($change)) {
尝试并更加小心您的变量名称。