我对某些主题的打印有问题。这个问题是我无法更新我的用户信息的原因。虽然这个代码是我认为正确的。无法使用php打印支票
这是我在editprofile页面上的代码。
include_once ("classes/Db.class.php");
include_once ("classes/config.class.php");
include_once ("classes/user.class.php");
session_start();
if (!isset($_SESSION['loggedIn'])) {
echo("not set");
header("Location:index.php");
}
if (!empty($_POST['update'])) {
echo "test 2";
// todo: 1 form input velden ophalen
try {
$u = new User();
$u->Username = $_POST['form-username'];
$u->Email = $_POST['form-email'];
$u->Password = $_POST['form-password'];
$u->Passwordconfirmation = $_POST['form-passwordconf'];
$u->Update($_SESSION['loggedIn']);
$u->profileImg($_SESSION['loggedIn']);
$succes = "Je gegevens zijn aangepast";
} catch (exception $e) {
$succes = $e->getMessage();
}
}
这里是我的user.class.php中的代码。我想与之交谈的具体功能是更新功能。
<?php
/**
* Created by PhpStorm.
* User: erhanlammar
* Date: 23/04/16
* Time: 10:13
*/
include_once("Db.class.php");
class User{
// todo: 1 private variabelen aanmaken voor firstname, lastname, ...
private $_db;
private $m_sUsername;
private $m_sFirstname;
private $m_sLastname;
private $m_sEmail;
private $m_sPassword;
private $m_sPasswordconfirmation;
private $m_sProfileimage;
//private $m_susersid;
// todo: 2 getters & setters!
public function __set($p_sProperty, $p_vValue){
switch($p_sProperty){
case "Username":
if(!empty($p_vValue)){
$this->m_sUsername = $p_vValue;
break;
}else{
//opvangen van leeg veld username.
throw new exception("vergeet geen username in te vullen");
}
case "Firstname":
if(!empty($p_vValue)){
$this->m_sFirstname = $p_vValue;
break;
}else{
//opvangen van leeg veld firstname.
throw new exception("Uw voornaam hebben we echt wel nodig");
}
case "Lastname":
if(!empty($p_vValue)){
$this->m_sLastname = $p_vValue;
break;
}else{
//opvangen van leeg veld lastname.
throw new exception("Heeft u geen achternaam?");
}
case "Email":
if(!empty($p_vValue)){
$this->m_sEmail = $p_vValue;
break;
}else{
//opvangen van leeg veld email.
throw new exception("Wij hebben uw email nodig om u op de hoogte te houden");
}
case "Password":
if(!empty($p_vValue)){
$this->m_sPassword = $p_vValue;
break;
}else{
//opvangen van leeg veld firstname.
throw new exception("Zonder wachtwoord geen login");
}
case "Passwordconfirmation":
if(!empty($p_vValue)){
$this->m_sPasswordconfirmation = $p_vValue;
break;
}else{
//opvangen van leeg veld firstname.
throw new exception("Zonder wachtwoord geen login");
}
case "Profileimage":
$this->m_sProfileimage = $p_vValue;
break;
}
}
public function __get($p_sProperty){
switch($p_sProperty){
case "Username":
return $this->m_sUsername;
break;
case "Firstname":
return $this->m_sFirstname;
break;
case "Lastname":
return $this->m_sLastname;
break;
case "Email":
return $this->m_sEmail;
break;
case "Password":
return $this->m_sPassword;
break;
case "Passwordconfirmation":
return $this->m_sPasswordconfirmation;
break;
case "Profileimage":
return $this->m_sProfileimage;
break;
}
}
private function checkPasswordConfirmation(){
if($this->m_sPassword == $this->m_sPasswordconfirmation){
return true;
}else{
throw new exception("wachtwoorden komen niet overeen");
}
}
public function signup(){
if(!$this->checkEmail()){
throw new exception("Dit emailadres bestaat al neem een ander of ga naar login");
}
if(!$this->checkUsername()){
throw new exception("De username die u gekozen heeft bestaat al!!");
}
if(!$this->checkPasswordConfirmation()){
throw new exception("De registratie is niet correct verlopen. Check alles nog eens");
}
$conn = new PDO("mysql:host=localhost;dbname=IMDstagram", "root","");
$options= ['cost' => 12];
$this->m_sPassword = password_hash($this->m_sPassword, PASSWORD_DEFAULT, $options);
$statement = $conn->prepare("INSERT INTO users(
username,
firstname,
lastname,
email,
password
)
VALUES(
:username,
:firstname,
:lastname,
:email,
:password
)
");
$statement->bindValue(":username", $this->m_sUsername);
$statement->bindValue(":firstname", $this->m_sFirstname);
$statement->bindValue(":lastname", $this->m_sLastname);
$statement->bindValue(":email", $this->m_sEmail);
$statement->bindValue(":password", $this->m_sPassword);
return $statement->execute();
}
public function checkEmail(){
$PDO = Db::getInstance();
$stmt = $PDO->prepare("SELECT * FROM users WHERE email= :email");
$stmt->bindValue(":email", $this->m_sEmail, PDO::PARAM_STR);
$stmt->execute();
if($stmt->rowCount() > 0){
return false;
throw new exception("") ;
}
else{
return true;
}
}
public function checkUsername(){
$PDO = Db::getInstance();
$stmt = $PDO->prepare("SELECT * FROM users WHERE username= :username");
$stmt->bindValue(":username", $this->m_sUsername, PDO::PARAM_STR);
$stmt->execute();
if($stmt->rowCount() > 0){
return false;
throw new exception("") ;
}
else{
return true;
}
}
public function loggingIn(){
if(!empty($this->m_sUsername) && !empty($this->m_sPassword)){
$PDO = Db::getInstance();
$stmt = $PDO->prepare("SELECT * FROM users WHERE username = :username");
$stmt->bindValue(":username", $this->m_sUsername, PDO::PARAM_STR);
$stmt->execute();
if($stmt->rowCount() > 0){
$result = $stmt->fetch(PDO::FETCH_ASSOC);
$password = $this->m_sPassword;
$hash = $result['password'];
if(password_verify($password, $hash)){
session_start();
$_SESSION["loggedIn"] = $result['usersid'];
$_SESSION["loggedIn"] = $result ['username'];
session_write_close();
return true;
}else{
return false;
}
}
}
}
public function Update($userid){
$PDO = Db::getInstance();
if(!empty($this->m_sUsername)){
$stmt = $PDO->prepare("UPDATE users SET username= :username WHERE usersid = :usersid");
$stmt->bindValue(":usersid", $userid, PDO::PARAM_INT);//update velden velden met where m_sUserid = Userid
$stmt->bindValue(":username", $this->m_sUsername, PDO::PARAM_STR);
$stmt->execute();
echo("username");
}
if (!empty($this->m_sEmail)){
if(!$this->checkEmail()){
throw new exception("De update is niet correct verlopen. Check alles nog eens");
}
$stmt = $PDO->prepare("UPDATE users SET email= :email WHERE usersid = :usersid");
$stmt->bindValue(":usersid", $userid, PDO::PARAM_INT);//update username met " " "
$stmt->bindValue(":email", $this->m_sEmail, PDO::PARAM_STR); //aleen email
$stmt->execute();
echo("email");
}
if (!empty($this->m_sPassword)){
if(!$this->checkPasswordConfirmation()){
throw new exception("de update lukt niet, passwoorden komen niet overeen.");
}
$stmt = $PDO->prepare("UPDATE users Set password = :password WHERE usersid = :usersid");
$stmt->bindValue(":usersid", $userid, PDO::PARAM_INT);//update password met " " "
$stmt->bindValue(":password", $this->m_sPassword, PDO::PARAM_STR); //aleen u password
$stmt->execute();
}
}
}
1)检查下列实例属性'$ m_sUsername','$ m_sEmail'和'$ m_sPassword'是否存在并设置与否。你已经设置了不同的实例属性'$ u-> Username = ...','$ u-> Email = ...'等等。2)重构你的* update()*方法,而不是三个* if只有一个* if *块来更新所有三个字段。 3)不要将密码存储为简单易读的文本,在插入前务必使用[salted password hashing](https://crackstation.net/hashing-security.htm)。 –
他们都设置和存在。密码也被散列。 –
你在哪里设置了所有这些实例属性,“$ m_sUsername”,“$ m_sEmail”和“$ m_sPassword”,以及你在哪里哈希密码?我没有在任何地方看到*代码*。 –