udemy cms proje kayit sayfa Uncaught PDOException Hatasi
kayit yaparken boyle bir hata aldim
yardimci olursunuz
Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 1364 Field 'user_permissions' doesn't have a default value in /opt/lampp/htdocs/daa/app/classes/user.php:29 Stack trace: #0 /opt/lampp/htdocs/daa/app/classes/user.php(29): PDOStatement->execute(Array) #1 /opt/lampp/htdocs/daa/app/controller/register.php(38): User::Register(Array) #2 /opt/lampp/htdocs/daa/index.php(23): require('/opt/lampp/htdo...') #3 {main} thrown in /opt/lampp/htdocs/daa/app/classes/user.php on line 29
/ /opt/lampp/htdocs/daa/app/classes/user.php:
<?php
<?php
class User {
public static function Login($data)
{
$_SESSION['user_id'] = $data['user_id'];
$_SESSION['user_name'] = $data['user_name'];
$_SESSION['user_rank'] = $data['user_rank'];
$_SESSION['user_permissions'] = $data['user_permissions'];
}
public static function userExist($username, $email = '@@')
{
global $db;
$query = $db->prepare('SELECT * FROM users WHERE user_name = :username || user_email = :email');
$query->execute([
'username' => $username,
'email' => $email
]);
return $query->fetch(PDO::FETCH_ASSOC);
}
public static function Register($data)
{
global $db;
$query = $db->prepare('INSERT INTO users SET user_name = :username, user_url = :url, user_email = :email, user_password = :password');
return $query->execute($data);
}
}
?>
/opt/lampp/htdocs/daa/app/controller/register.php
<?php
<?php
$meta = [
'title' => 'Kayıt Ol'
];
if (post('submit')){
$username = post('username');
$email = post('email');
$password = post('password');
$password_again = post('password_again');
if (!$username){
$error = 'Lütfen kullanıcı adınızı yazın.';
} elseif (!$email){
$error = 'Lütfen e-posta adresinizi yazın.';
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)){
$error = 'Lütfen geçerli bir e-posta adresi yazın.';
} elseif (!$password || !$password_again){
$error = 'Lütfen şifrenizi girin.';
} elseif ($password != $password_again){
$error = 'Girdiğiniz şifreler birbiriyle uyuşmuyor.';
} else {
// üye var mı kontrol et
$row = User::userExist($username, $email);
if ($row){
$error = 'Bu kullanıcı adı ya da e-posta zaten kullanılıyor. Lütfen başka bir tane deneyin.';
} else {
// üyeyi ekle
$result = User::Register([
'username' => $username,
'url' => permalink($username),
'email' => $email,
'password' => password_hash($password, PASSWORD_DEFAULT)
]);
if ($result){
$success = 'Üyeliğiniz başarıyla oluşturuldu, yönlendiriliyorsunuz.';
User::Login([
'user_id' => $db->lastInsertId(),
'user_name' => $username
]);
header('Refresh:2;url=' . site_url());
} else {
$error = 'Bir sorun oluştu, lütfen daha sonra tekrar deneyin.';
}
}
}
}
require view('register');
?>
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (2)
<?php
if ($result){
$success = 'Üyeliğiniz başarıyla oluşturuldu, yönlendiriliyorsunuz.';
User::Login([
'user_id' => $db->lastInsertId(),
'user_name' => $username
]);
header('Refresh:2;url=' . site_url());
} else {
$error = 'Bir sorun oluştu, lütfen daha sonra tekrar deneyin.';
}
?>
User::Login([
'user_id' => $db->lastInsertId(),
'user_name' => $username
]);
Hocam Burada Eksik Parametreler Var Yani Şöyle Düşünebilirsiniz:
public static function Login($data = [
'user_id' => $db->lastInsertId(),
'user_name' => $username
])
{
$_SESSION['user_id'] = $data['user_id'];
$_SESSION['user_name'] = $data['user_name'];
$_SESSION['user_rank'] = $data['user_rank'];
$_SESSION['user_permissions'] = $data['user_permissions'];
}
Böyle düzelecektir.
User::Login([
'user_id' => $db->lastInsertId(),
'user_name' => $username,
'user_rank' => $userrank,
'user_permissions' => $userpermissions
]);