Foros del Web » Programando para Internet » PHP »

Problema con include en archivo de funciones

Estas en el tema de Problema con include en archivo de funciones en el foro de PHP en Foros del Web. Saludos. 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 ...
  #1 (permalink)  
Antiguo 25/07/2011, 05:16
 
Fecha de Ingreso: agosto-2003
Mensajes: 324
Antigüedad: 20 años, 8 meses
Puntos: 1
Problema con include en archivo de funciones

Saludos.
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(0count($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($permitidossubstr($name,$i,1))===false){ 
             
$caracter1KO 1;
                 } 
    }
    endif;
    if (
$caracter1KO == || 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($permitidossubstr($username,$i,1))===false){ 
             
$caracterKO 1;
                 } 
    }
    endif;
    if (
$caracterKO == || 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) < || 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)>&& strlen($term_dom)<&& (!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;
}

?>
  #2 (permalink)  
Antiguo 25/07/2011, 05:16
 
Fecha de Ingreso: agosto-2003
Mensajes: 324
Antigüedad: 20 años, 8 meses
Puntos: 1
Respuesta: Problema con include en archivo de funciones

Continúo en una respuesta orque me paso de tamaño.. jeje...

El archivo externo de conexión:
Código PHP:
<?php
function Conectarse()
{
   if (!(
$link=mysql_connect("localhost","usuario","clave")))
   {
      echo 
"Error conectando a la base de datos.";
      exit();
   }
  
// if (!mysql_select_db("empleopruebas",$link))
  // {
   //   echo "Error seleccionando la base de datos.";
    //  exit();
   //}
   
return $link;
}
?>
Las cosas "duplicadas" y/o comentadas son de distintas pruebas....

¿Donde puedo estar fallando para que no "se entere" de la conexión desde el archivo externo?

Muchas gracias
  #3 (permalink)  
Antiguo 25/07/2011, 05:44
 
Fecha de Ingreso: agosto-2003
Mensajes: 324
Antigüedad: 20 años, 8 meses
Puntos: 1
Respuesta: Problema con include en archivo de funciones

ya lo he solucionado .. creo.. porque me funciona.. jeje
Tenía qu eponer el include("conex.php"); como primera línea de la página que contiene todas las funciones..

Etiquetas: html, include, mysql, registro, sql, tabla, formulario, variables, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:03.