Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 未使用复选框选择正确删除图像_Php_Html_Mysql - Fatal编程技术网

Php 未使用复选框选择正确删除图像

Php 未使用复选框选择正确删除图像,php,html,mysql,Php,Html,Mysql,如果用户决定不再在其个人资料中使用图像(化身),我很难使用复选框从MySQL表中删除图像URL 该表(有更多列)如下所示: user_id | img | user_name 1 | http://www.domain.com/path/to/image | User A 2 | | User B 3 |

如果用户决定不再在其个人资料中使用图像(化身),我很难使用复选框从MySQL表中删除图像URL

该表(有更多列)如下所示:

user_id | img                                    | user_name
 1      |  http://www.domain.com/path/to/image   |  User A
 2      |                                        |  User B
 3      |                                        |  User C
<form method="post" action="user/update_info.php">
  <div class="form-group">
    <label for="user_name">Username:</label>
    <input type="text" id="user_name" name="user_name" value="user_name" required>
  </div>
  <div class="form-group">
    <label for="email">Email:</label>
    <input type="email" id="email" name="email" value="email" required>
  </div>
  <div class="form-group">
    <label for="password">Password:</label>
    <input type="password" id="password" name="password" value="password" required>
  </div>
  <div class="form-group col-sm-4">
    <input type="file" name="img">
    <br>
    <label for="noav">Use no avatar.</label>
    <input type="checkbox" id="noav" name="noav" value="Yes">
  </div>
  <input type="submit" class="btn btn-warning" value="Update">
</form>
<?php
$user_id = $_SESSION["user"]['user_id'];
$user_name = $_POST['user_name'];
$email = $_POST['email'];
$password = $_POST['password'];
$noav = $_POST['noav'];
$session_password = $_SESSION["user"]['password'];

if ($password != $session_password) {
  $password = password_hash($password, PASSWORD_DEFAULT);
}
$img = $_FILES["img"];
$query = "UPDATE users 
          SET user_name='$user_name', char_name='$char_name',
              user_email='$email', password='$password'
          WHERE user_id=$user_id";
mysqli_query($this->connection, $query)
  or die("Update error: " . mysqli_error($this->connection));
if($img["error"] == 0) {
  $name = "public/gallery/" . time() . $img["name"];
  $name_in_db = URL . $name;
  $tmp_name = $img["tmp_name"];
  move_uploaded_file($tmp_name,  $name);
  if ($noav = 'Yes') {
    $query = "UPDATE users SET img='' WHERE user_id=$user_id";
  } else {
    $query = "UPDATE users SET img='$name_in_db' WHERE user_id=$user_id";
  }
mysqli_query($this->connection, $query)
  or die("Update error: " . mysqli_error($this->connection));
}
?>
在用户配置文件上,如果img中存在URL,则正确显示图像

我的HTML表单如下所示:

user_id | img                                    | user_name
 1      |  http://www.domain.com/path/to/image   |  User A
 2      |                                        |  User B
 3      |                                        |  User C
<form method="post" action="user/update_info.php">
  <div class="form-group">
    <label for="user_name">Username:</label>
    <input type="text" id="user_name" name="user_name" value="user_name" required>
  </div>
  <div class="form-group">
    <label for="email">Email:</label>
    <input type="email" id="email" name="email" value="email" required>
  </div>
  <div class="form-group">
    <label for="password">Password:</label>
    <input type="password" id="password" name="password" value="password" required>
  </div>
  <div class="form-group col-sm-4">
    <input type="file" name="img">
    <br>
    <label for="noav">Use no avatar.</label>
    <input type="checkbox" id="noav" name="noav" value="Yes">
  </div>
  <input type="submit" class="btn btn-warning" value="Update">
</form>
<?php
$user_id = $_SESSION["user"]['user_id'];
$user_name = $_POST['user_name'];
$email = $_POST['email'];
$password = $_POST['password'];
$noav = $_POST['noav'];
$session_password = $_SESSION["user"]['password'];

if ($password != $session_password) {
  $password = password_hash($password, PASSWORD_DEFAULT);
}
$img = $_FILES["img"];
$query = "UPDATE users 
          SET user_name='$user_name', char_name='$char_name',
              user_email='$email', password='$password'
          WHERE user_id=$user_id";
mysqli_query($this->connection, $query)
  or die("Update error: " . mysqli_error($this->connection));
if($img["error"] == 0) {
  $name = "public/gallery/" . time() . $img["name"];
  $name_in_db = URL . $name;
  $tmp_name = $img["tmp_name"];
  move_uploaded_file($tmp_name,  $name);
  if ($noav = 'Yes') {
    $query = "UPDATE users SET img='' WHERE user_id=$user_id";
  } else {
    $query = "UPDATE users SET img='$name_in_db' WHERE user_id=$user_id";
  }
mysqli_query($this->connection, $query)
  or die("Update error: " . mysqli_error($this->connection));
}
?>

用户名:
电邮:
密码:

不要使用化身。
我的PHP文件如下所示:

user_id | img                                    | user_name
 1      |  http://www.domain.com/path/to/image   |  User A
 2      |                                        |  User B
 3      |                                        |  User C
<form method="post" action="user/update_info.php">
  <div class="form-group">
    <label for="user_name">Username:</label>
    <input type="text" id="user_name" name="user_name" value="user_name" required>
  </div>
  <div class="form-group">
    <label for="email">Email:</label>
    <input type="email" id="email" name="email" value="email" required>
  </div>
  <div class="form-group">
    <label for="password">Password:</label>
    <input type="password" id="password" name="password" value="password" required>
  </div>
  <div class="form-group col-sm-4">
    <input type="file" name="img">
    <br>
    <label for="noav">Use no avatar.</label>
    <input type="checkbox" id="noav" name="noav" value="Yes">
  </div>
  <input type="submit" class="btn btn-warning" value="Update">
</form>
<?php
$user_id = $_SESSION["user"]['user_id'];
$user_name = $_POST['user_name'];
$email = $_POST['email'];
$password = $_POST['password'];
$noav = $_POST['noav'];
$session_password = $_SESSION["user"]['password'];

if ($password != $session_password) {
  $password = password_hash($password, PASSWORD_DEFAULT);
}
$img = $_FILES["img"];
$query = "UPDATE users 
          SET user_name='$user_name', char_name='$char_name',
              user_email='$email', password='$password'
          WHERE user_id=$user_id";
mysqli_query($this->connection, $query)
  or die("Update error: " . mysqli_error($this->connection));
if($img["error"] == 0) {
  $name = "public/gallery/" . time() . $img["name"];
  $name_in_db = URL . $name;
  $tmp_name = $img["tmp_name"];
  move_uploaded_file($tmp_name,  $name);
  if ($noav = 'Yes') {
    $query = "UPDATE users SET img='' WHERE user_id=$user_id";
  } else {
    $query = "UPDATE users SET img='$name_in_db' WHERE user_id=$user_id";
  }
mysqli_query($this->connection, $query)
  or die("Update error: " . mysqli_error($this->connection));
}
?>

如果($noav='Yes'),问题就出在这个
上。

您正在分配而不是比较:

if ($noav == 'Yes')
参考资料:

另外,最好使用
isset()
检查复选框是否已设置

还要确保会话已启动;这是未知的

如果不是,则添加
session_start()在使用它们的所有文件中

您还将面临严重的SQL注入。使用事先准备好的陈述:


它都是用户类的一部分(我刚刚删除了一些与此无关的部分,例如会话和语句)。将其从“=”更改为“=”后,它确实可以工作,但是,只有在选中图像并选中复选框时,才会清除它。仅选中复选框时,旧URL将保留。无需担心!我知道了!在移动查询以清除img错误检查之外的img后,结果非常好。非常感谢你。确保选择正确的答案。