SQL error
Publicado por albert (21 intervenciones) el 08/09/2021 18:41:01
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'password' cannot be null
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
<?php
session_start();
require('includes/config.php');
//Si existe la sesion redirigir a la pagina de miembros
if($_SESSION['user']){
header('Location: memberpage.php'); exit();}
//Verifica si el formulario ha sido enviado correctamente
if(isset($_POST['submit'])){
$username = htmlentities($_POST['username']);
$email = htmlentities($_POST['email']);
$password = htmlentities($_POST['password']);
$passwordConfirm = htmlentities($_POST['passwordConfirm']);
if (!isset($username)) $error[] = "Por favor rellene el usuario";
if (!isset($email)) $error[] = "Por favor rellene el Email";
if (!isset($password)) $error[] = "Por favor rellene todos los campos";
if (!isset($passwordConfirm)) $error[] = "Por favor rellene todos los campos";
if(!$user->isValidUsername($username)){
$error[] = 'Los nombres de usuario deben tener al menos 3 caracteres alfanuméricos';
} else {
$stmt = $db->prepare('SELECT username FROM members WHERE username = :username');
$stmt->execute(array(':username' => $username));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if(!empty($row['username'])){
$error[] = 'El nombre de usuario proporcionado ya está en uso.';
}
}
if(strlen($_POST['password']) < 3){
$error[] = 'La contraseña es demasiado corta.';
}
if(strlen($_POST['passwordConfirm']) < 3){
$error[] = 'Confirmar contraseña es demasiado corta.';
}
if(strlen($_POST['passwordConfirm']) < 3){
$error[] = 'Confirmar contraseña es demasiado corta.';
}
if($_POST['password'] != $_POST['passwordConfirm']){
$error[] = 'Las contraseñas no coinciden.';
}
//Validamos el correo electronico
$email = htmlspecialchars_decode($_POST['email'], ENT_QUOTES);
if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
$error[] = 'Por favor, introduce una dirección de correo electrónico válida';
} else {
$stmt = $db->prepare('SELECT email FROM members WHERE email = :email');
$stmt->execute(array(':email' => $email));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if(!empty($row['email'])){
$error[] = 'Email provided is already in use.';
}
}
//Comprobamos que no exista error
//Comprobamos que no exista error
if(!isset($error)){
$_SESSION['user'] = $username;
$micarpeta = './cuentas/accounts/'. $username;
if (!file_exists($micarpeta)) {
mkdir($micarpeta, 777, true);
} else {
echo'not working';
}
$espacio = 6;
//hash the password
$hashedpassword = $user->password_hash($_POST['password'], PASSWORD_BCRYPT);
//Creamos el codigo de activacion
$activasion = md5(uniqid(rand(),true));
try {
//Insertar la informacion ingresada en el formulario de registro
$stmt = $db->prepare('INSERT INTO members (username,password,email,active,espacio) VALUES (:username, :password, :email, :active,:espacio)');
$stmt->execute(array(
':username' => $username,
':password' => $hashedpassword,
':email' => $email,
':active' => $activasion,
':espacio' => $espacio
));
$id = $db->lastInsertId('memberID');
//send email
$to = $_POST['email'];
$subject = "Confirmación de registro";
$body = "<p>Gracias por registrarse en sitio!.</p>
<p>Para activar su cuenta, haga clic en este enlace: <a href='https://send-file.casacam.net/register/todo/register/activate.php?x=$id&y=$activa>
<p>Saludos al administrador del sitio</p>";
$mail = new Mail();
$mail->setFrom(SITEEMAIL);
$mail->addAddress($to);
$mail->subject($subject);
$mail->body($body);
$mail->send();
//redireccionamos al index
header('Location: index.php?action=joined');
exit;
//else catch the exception and show the error.
} catch(PDOException $e) {
$error[] = $e->getMessage();
}
}
}
//definimos el titulo de la pagina
Valora esta pregunta


0