PHP - SQL error

 
Vista:

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

SQL error

Publicado por Mauro (1037 intervenciones) el 10/09/2021 14:09:55
Hola Albert!

Verifica primero que nada cómo está la definición de tu base de datos, aparentemente no está permitiendo valores nulos para el campo password... lo cual suena muy razonbale :)

Habría que verificar en la línea 92 que haya algo dentro de $_POST['password'] para hashear.

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

SQL error

Publicado por albert (21 intervenciones) el 11/09/2021 18:42:33
resuelto he quitado la variable $user al passowrd
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar