Estoy empezando con php, y usando algunas cosas del foro y demás, estoy intentando montar un registro de usuarios.
Bien.. todo va bien, pero con las recomendaciones que se hacen, intento sacar las líneas de conexión a la bd en un archivo externo.
Uso un formulario donde rellenar los datos y una página aparte con todas las funciones que usaré.
en esta página de funciones, si conecto "directamente" con la bd no hay problemas, pero claro, las líneas de conexión me las quiero "sacar" a un archivo externo.
Código de php de las funciones:
Código PHP:
<?php
function mailActivacion($dir_correo, $usuario, $enlace){
$dominio = "http://neweb.cibernos.com/empleo/pruebasempleo/";
$destinatario = $dir_correo;
$asunto = "Pruebas Empleo - Activar Usuario";
$cuerpo = '
<html>
<head>
<title>Pruebas Empleo - Activar usuario</title>
</head>
<body>
Hola ';
$cuerpo .= $usuario;
$cuerpo .= '<p>Gracias por registrarte en <b>"Pruebas Empleo"</b>.</p>
<p>Para completar el registro tienes que confirmar que has recibido el e-mail en el siguiente enlace:</p>
<p style=text-align:center><a href=';
$cuerpo .= $dominio . $enlace;
$cuerpo .= " target=_blank>Activa tu usuario</a></p></body></html>";
$cuerpo .= "<br><br><br>";
$cuerpo .= "Si tu correo no te permite ejecutarlo, copia y pega en tu navegador la siguiente dirección:<br>";
$cuerpo .= $dominio . $enlace;
//para el envío en formato HTML
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
//dirección del remitente
$headers .= "From: Administración Empleo Cibernos <[email protected]>\r\n";
//dirección de respuesta, si queremos que sea distinta que la del remitente
$headers .= "Reply-To: [email protected]\r\n";
//ruta del mensaje desde origen a destino
//$headers .= "Return-path: [email protected]\r\n";
//direcciones que recibián copia
//$headers .= "Cc: [email protected]\r\n";
//direcciones que recibirán copia oculta
//$headers .= "Bcc: [email protected],[email protected]\r\n";
//En localhost el envío de e-mail a veces no funciona, hay que configurar algunas cosas.
mail($destinatario,$asunto,$cuerpo,$headers);
}
function generar_txtAct($longitud,$especiales){
// Array con los valores a escojer
$semilla = array();
$semilla[] = array('a','e','i','o','u');
$semilla[] = array('b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z');
$semilla[] = array('0','1','2','3','4','5','6','7','8','9');
$semilla[] = array('A','E','I','O','U');
$semilla[] = array('B','C','D','F','G','H','J','K','L','M','N','P','Q','R','S','T','V','W','X','Y','Z');
$semilla[] = array('0','1','2','3','4','5','6','7','8','9');
// si puede contener caracteres especiales, aumentamos el array $semilla
if ($especiales) { $semilla[] = array('$','#','%','&','@','-','?','¿','!','¡','+','-','*'); }
// creamos la clave con la longitud indicada
for ($bucle=0; $bucle < $longitud; $bucle++)
{
// seleccionamos un subarray al azar
$valor = mt_rand(0, count($semilla)-1);
// selecccionamos una posicion al azar dentro del subarray
$posicion = mt_rand(0,count($semilla[$valor])-1);
// cojemos el caracter y lo agregamos a la clave
$clave .= $semilla[$valor][$posicion];
}
// devolvemos la clave
return $clave;
}
//FUNCION PARA INSERTAR EL REGISTRO EN LA TABLA users_temp
function insertarReg($name_, $username_, $password1_, $email_){
//Declaramos esta variable global, para poder usarla en toda la aplicación
global $url;
//LLamar a la función para generar el texto aleatorio para Activar Usuario.
//Le pasamos como parámetro los caracteres que queremos generar y si los queremos especiales o no
$clave = generar_txtAct(20,false);
//Montamos la estructura del enlace con la clave.
$url = "activar.php?id=" . $clave;
/*Teneis que declarar las variables $servidor, $usuario,$password y
$sdb (base de datos). En mi caso para Localhost tengo lo siguiente:*/
include("conex.php");
$link=Conectarse();
//$servidor = "localhost";
//$usuario = "usuario";
//$password = "clave";
$sdb = "empleopruebas";
//$ilink3=mysql_connect($servidor,$usuario,$password) or die(mysql_error());
//mysql_select_db($sdb,$ilink3);
mysql_select_db($sdb,$link);
$inserta= "insert into users_temp (nombre,usersTemp,password,email,fecAlta,txt_Activ) values ('$name_','$username_','$password1_','$email_',CURDATE(),'$clave')";
$resultado3=mysql_query($inserta,$link) or die (mysql_error());
//$resultado3=mysql_query($inserta,$ilink3) or die (mysql_error());
if (!$resultado3)
return false;
else
return true;
}
/*function validateName($name){
//NO cumple longitud minima
if(strlen($name) < 5)
return false;
//SI longitud pero NO solo caracteres A-z
else if(!preg_match("/^[a-zA-Z]+$/", $name))
return false;
// SI longitud, SI caracteres A-z
else
return true;
}*/
function validateName($name){
$permitidos = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_ ";
$caracter1KO = 0;
if(strlen($name) < 5):
return false;
else:
for ($i=0; $i<strlen($name); $i++){
if (strpos($permitidos, substr($name,$i,1))===false){
$caracter1KO = 1;
}
}
endif;
if ($caracter1KO == 1 || strlen($name) <= 4):
return false;
else:
return true;
endif;
}
function validateUsername($username){
$permitidos = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_ ";
$caracterKO = 0;
if(strlen($username) < 5):
return false;
else:
for ($i=0; $i<strlen($username); $i++){
if (strpos($permitidos, substr($username,$i,1))===false){
$caracterKO = 1;
}
}
endif;
if ($caracterKO == 1 || strlen($username) <= 4):
return false;
else:
return true;
endif;
}
function validateExistUsername($username){
/*Teneis que declarar las variables $servidor, $usuario,$password y
$sdb (base de datos). En mi caso para Localhost tengo lo siguiente:*/
include("conex.php");
$link=Conectarse();
//$servidor = "localhost";
//$usuario = "usuario";
//$password = "clave";
$sdb = "empleopruebas";
//$ilink=mysql_connect($servidor,$usuario,$password) or die(mysql_error());
//mysql_select_db($sdb,$ilink);
mysql_select_db($sdb,$link);
$consulta= "select usersTemp from users_temp where usersTemp = '$username'";
$resultado=mysql_query($consulta,$link) or die (mysql_error());
//$resultado=mysql_query($consulta,$ilink) or die (mysql_error());
if (mysql_num_rows($resultado)>0)
return false;
else
return true;
}
function validatePassword1($password1){
//NO tiene minimo de 5 caracteres o mas de 12 caracteres
if(strlen($password1) < 5 || strlen($password1) > 12)
return false;
// SI longitud, NO VALIDO numeros y letras
else if(!preg_match("/^[0-9a-zA-Z]+$/", $password1))
return false;
// SI rellenado, SI email valido
else
return true;
}
function validatePassword2($password1, $password2){
//NO coinciden
if($password1 != $password2)
return false;
else
return true;
}
function validateEmail($email){
if ((strlen($email) >= 6) && (substr_count($email,"@") == 1) && (substr($email,0,1) != "@") && (substr($email,strlen($email)-1,1) != "@")){
if ((!strstr($email,"'")) && (!strstr($email,"\"")) && (!strstr($email,"\\")) && (!strstr($email,"\$")) && (!strstr($email," "))) {
//miro si tiene caracter .
if (substr_count($email,".")>= 1){
//obtengo la terminacion del dominio
$term_dom = substr(strrchr ($email, '.'),1);
//compruebo que la terminación del dominio sea correcta
if (strlen($term_dom)>1 && strlen($term_dom)<5 && (!strstr($term_dom,"@")) ){
//compruebo que lo de antes del dominio sea correcto
$antes_dom = substr($email,0,strlen($email) - strlen($term_dom) - 1);
$caracter_ult = substr($antes_dom,strlen($antes_dom)-1,1);
if ($caracter_ult != "@" && $caracter_ult != "."){
$mail_correcto = 1;
}
}
}
}
}
if ($mail_correcto)
return true;
else
return false;
}
function validateExistMail($mail){
/*Teneis que declarar las variables $servidor, $usuario,$password y
$sdb (base de datos). En mi caso para Localhost tengo lo siguiente:*/
include("conex.php");
$link=Conectarse();
//$servidor = "localhost";
//$usuario = "usuario";
//$password = "clave";
$sdb = "empleopruebas";
//$ilink2=mysql_connect($servidor,$usuario,$password) or die(mysql_error());
mysql_select_db($sdb,$link);
//mysql_select_db($sdb,$ilink2);
$consulta2= "select id_usersTemp from users_temp where email = '$mail'";
$resultado2=mysql_query($consulta2,$link) or die (mysql_error());
// $resultado2=mysql_query($consulta2,$ilink2) or die (mysql_error());
if (mysql_num_rows($resultado2)>0)
return false;
else
return true;
}
?>