Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save eusonlito/9429656 to your computer and use it in GitHub Desktop.

Select an option

Save eusonlito/9429656 to your computer and use it in GitHub Desktop.
<?php
define('HASH', 'BestRandomHashEver');
$erro = $ok = '';
if (empty($_POST['usuario']) || empty($_POST['contrasinal'])) {
$erro = 'Sentímolo, os datos enviados non son correctos';
return false;
}
$usuario = $_POST['usuario'];
$contrasinal = $_POST['contrasinal'];
if (filter_var($usuario, FILTER_VALIDATE_EMAIL) === false) {
$erro = 'Sentímolo, pero o email non parece correcto';
return false;
}
if ((strlen($contrasinal) < 6) || !preg_match('/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).+$/', $contrasinal)) {
$erro = 'Sentímolo, pero o contrasinal non parece correcto';
return false;
}
try {
$PDO = new PDO('mysql:host=localhost;dbname=test', 'root', '');
} catch (Exception $e) {
throw new Exception('Ups! non se puido conectar a base de datos: '.$e->getMessage());
}
$PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
try {
$Q = $PDO->prepare('SELECT id FROM usuarios WHERE usuario = :usuario LIMIT 1');
$Q->execute(array(
':usuario' => $usuario
));
} catch (Exception $e) {
$erro = 'Sentímolo, pero nestes momentos non podemos proceder coa alta';
return false;
}
if ($Q->fetch()) {
$erro = 'Sentímolo, pero este usuario xa existe na base de datos';
return false;
}
try {
$Q = $PDO->prepare('INSERT INTO usuarios SET usuario = :usuario, contrasinal = :contrasinal');
$Q->execute(array(
':usuario' => $usuario,
':contrasinal' => crypt($contrasinal, HASH)
));
} catch (Exception $e) {
$erro = 'Sentímolo, pero nestes momentos non podemos proceder coa alta';
return false;
}
$ok = 'A túa alta foi procesada con éxito. Benvido!';
return true;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment