由于某种原因,函数set_file()和save_profile_pic()似乎实际上并没有运行,我无法弄清楚原因。功能本身在创建新用户时工作正常,但由于某种原因他们不在这里工作。
我也试过这个:
if(!$user -> set_file($_FILES['profile_pic'])) {
redirect("somewherenonexistant.php");
}
还有:
if($user -> set_file($_FILES['profile_pic'])) {
redirect("somewherenonexistant.php");
}
只是看看set_file()是否真的有效,但代码永远不会运行...无论我是否测试set_file()为true还是false,它都不会到达redirect()行...当然它必须是真还是假?!
我完全不知道代码为什么不运行。据推测,我现在已经盯着它看了太长时间而且无法找到它,所以我真的需要一些帮助。
以下是代码:
if(!empty($_GET['id'])) {
$user = User::get_by_id($_GET['id']);
if(isset($_POST['update'])) {
if($user) {
$user -> username = $_POST['username'];
$user -> password = $_POST['password'];
$user -> first_name = $_POST['first_name'];
$user -> last_name = $_POST['last_name'];
if(!empty($_FILES['profile_pic']['size'])) {
$user -> set_file($_FILES['profile_pic']);
$user -> save_profile_pic();
$user -> save();
redirect("edit_user.php?id={$user -> id}");
} else {
$user -> save();
}
}
}
} else {
redirect('users.php');
}
这是set_file()函数:
public function set_file($file) {
if(empty($file) || !$file || !is_array($file)) {
$this -> errors[] = 'No file was uploaded';
return false;
} else if($file['error'] != 0) { //!= 0 == UPLOAD_ERR_OK
$this -> errors[] = $this -> upload_errors[$file['error']];
return false;
} else {
$this -> profile_pic = basename($file['name']);
$this -> tmp_path = $file['tmp_name'];
}
return true;
}
感谢。