Foros del Web » Programando para Internet » PHP »

No se conecta a la base de datos

Estas en el tema de No se conecta a la base de datos en el foro de PHP en Foros del Web. Joer... cada paso que doy parece que lo hago hacia atrás. Resulta que quiero conectarme a la base de datos, tengo una base de datos ...
  #1 (permalink)  
Antiguo 09/01/2008, 13:07
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
No se conecta a la base de datos

Joer... cada paso que doy parece que lo hago hacia atrás.

Resulta que quiero conectarme a la base de datos, tengo una base de datos creada y funcionar funciona, ya que me puedo conectar mediantes otros lenguajes como por ejemplo python a ella.

Quiero hacerlo con php y el caso es que tampoco me muestra ningun error ni nada.

Código PHP:
<html>
</head>
<body>
<?php
function error_handler($errno$errstr$errfile$errline$errctx) {
    echo 
$errstr;
}
set_error_handler("error_handler");
error_reporting(E_ALL);  

?>

<?php 
echo "voy a conectarme";

$host "localhost"$db "usuarios"$user "neodani"$pass "xxxxx"
if (!(
$link mysql_connect($host$user$pass)))
{ echo 
"Error conectando a la base de datos."; exit(); } 
else{
echo 
"conexión establecida";
}
if (!
mysql_select_db($db$link))
{ echo 
"Error seleccionando la base de datos."; exit(); } 

?>
</body>
</html>
No se porque puede ser.

Tengo que revisar algun archivo de configuración? trabajo como local y con apache. (appserv)

Alguna idea?
  #2 (permalink)  
Antiguo 09/01/2008, 13:16
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 9 meses
Puntos: 638
Re: No se conecta a la base de datos

bueno bueno, una conexion normalita seria algo asi:
Código PHP:
<?php
$db_link 
mysql_connect("localhost""user""*******");
if (!
$db_link) {
   die(
"No se conecto al servidor: " mysql_error());
}
mysql_select_db("database") or die("No se encontro la Base de Datos");
?>
saludos y suerte
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #3 (permalink)  
Antiguo 09/01/2008, 14:45
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Re: No se conecta a la base de datos

Podes probar asi cambiando esta parte:

mysql_select_db($db) or die ('Error seleccionando base'); // selecciono base
__________________
Salu2!
  #4 (permalink)  
Antiguo 09/01/2008, 14:55
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Re: No se conecta a la base de datos

Al final, desintalé el appserv e instalé una nueva versión, en el directorio por defecto (antes lo tenia en otro) y con la configuración de serie...

Igual era por eso.

Ahora me va, al menos me introduce datos en la base de datos Weee!


Este es mi script de registro a ver que os parece.

Código PHP:
<?php
require ("config_BD.php"); //incluimos el config.php que contiene los datos de la conexión a la db

//recibo las variables y elimino los espacios en blanco con trim
$user trim($_POST['nick']);
$pass trim($_POST['pass']);
$pass1 trim($_POST['pass1']);
$email trim($_POST['email']);

//Comprobamos que los campos nick, pass y pass1 se han rellenado en el form de registro.php, sino volvemos al form. CAMPOS OBLIGATORIOS
if(($user == '') or ($pass == '') or ($pass1 == '')){
    
Header("Location: registro.php"); //enviamos al form de registro que esta en registro.php
    
}
else{

    
//Comprobamos que la pass y pass1 son iguales, sino, volvemos a registro.php
    
if($pass != $pass1){
        echo 
"Las passwords no son iguales </br>";
        
Header("Location: registro.php"); //enviamos al form de registro que esta en registro.php
    
}
    else{ 
//Todo bien
        
        //quitamos el codigo malicioso de $_POST[nick] y $_POST[pass]
        //$user = stripslashes($_POST['nick']);
        //$user = strip_tags($user);
        //$pass = stripslashes($_POST['pass']);
        //$pass = strip_tags($pass);

        // Conexión base de datos.
        // si no se puede conectar a la BD salimos del scrip con error 0 y redireccionamos a la pagina de error.
        
$db_conexionmysql_connect("$sql_host""$sql_usuario""$sql_pass") or die(header ("Location:  $redir?error_login=0"));
        
mysql_select_db("$sql_db");

        
//echo "Estamos conectados a = $sql_db </br>";

        //comprobamos que el usuario no existe en la db
        
$usuario_consulta=mysql_query("SELECT nick FROM users WHERE nick='$user'");
        
        if (
mysql_num_rows($usuario_consulta) != 0){ //SI el usuario ESTA en la BD
            
echo "Este usuario ya existe </br>";
            }
        
        else{ 
// si el usuario NO ESTA en la BD continuamos
            
if($user_ok=mysql_fetch_array($usuario_consulta)){
                
mysql_free_result($usuario_consulta); //liberamos la memoria del query a la db
                
}
            else{
                
//quitamos todo el codigo malicioso de las demas variables del form de registro
                
$email stripslashes($email);
                
$email strip_tags($email);
                
                
$rollo stripslashes($rollo);
                
$rollo strip_tags($rollo);
                
$rollo str_replace("\n\r","<br>",$rollo); //se cambian los saltos de linea por <br>
                
$rollo str_replace("\r\n","<br>",$rollo);
                
$rollo str_replace("\n","<br>",$rollo);
                
                
date_default_timezone_set("Europe/Madrid");
                
$fecha date("y/m/d H:i:s");
                
//echo "fecha = $fecha";
                
$level "2"//usaremos level 1 para admins, level 2 para los demas
                
                //introducimos el nuevo registro en la tabla users
                
mysql_query("INSERT INTO users (nick,pass,email,fecha,level,rollo) values ('$user','$pass','$email','$fecha','$level','$rollo') ");
                echo 
"Usuario registrado con éxito </br>";
                }
            
            }    
        }
}
    
?>
Varias preguntas...
1) Qué tal véis la seguridad?

2) Hago bien recibiendo las variables del formulario con un trim al principio de todo?

3) Quiero insertar en mi base de datos la fecha y hora en la que se hizo el registro, pero no lo consigo.
Con que formato tengo que definir el campo en la base de datos? y como llamo a la funcion data en php para que no se me queje la base de datos

4) No me funciona las redirecciones, tipo
Header("Location: registro.php");

No se hace así para que vaya a la pagina de registro? estando esta en el directorio actual del script?

Gracias de antemano!

PD: Gracias a vosotros voy adelantando cada día un poco mas
  #5 (permalink)  
Antiguo 10/01/2008, 08:10
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Re: No se conecta a la base de datos

Cita:
Iniciado por neodani Ver Mensaje
Al final, desintalé el appserv e instalé una nueva versión, en el directorio por defecto (antes lo tenia en otro) y con la configuración de serie...

Igual era por eso.

Ahora me va, al menos me introduce datos en la base de datos Weee!


Este es mi script de registro a ver que os parece.

Código PHP:
<?php
require ("config_BD.php"); //incluimos el config.php que contiene los datos de la conexión a la db

//recibo las variables y elimino los espacios en blanco con trim
$user trim($_POST['nick']);
$pass trim($_POST['pass']);
$pass1 trim($_POST['pass1']);
$email trim($_POST['email']);

//Comprobamos que los campos nick, pass y pass1 se han rellenado en el form de registro.php, sino volvemos al form. CAMPOS OBLIGATORIOS
if(($user == '') or ($pass == '') or ($pass1 == '')){
    
Header("Location: registro.php"); //enviamos al form de registro que esta en registro.php
    
}
else{

    
//Comprobamos que la pass y pass1 son iguales, sino, volvemos a registro.php
    
if($pass != $pass1){
        echo 
"Las passwords no son iguales </br>";
        
Header("Location: registro.php"); //enviamos al form de registro que esta en registro.php
    
}
    else{ 
//Todo bien
        
        //quitamos el codigo malicioso de $_POST[nick] y $_POST[pass]
        //$user = stripslashes($_POST['nick']);
        //$user = strip_tags($user);
        //$pass = stripslashes($_POST['pass']);
        //$pass = strip_tags($pass);

        // Conexión base de datos.
        // si no se puede conectar a la BD salimos del scrip con error 0 y redireccionamos a la pagina de error.
        
$db_conexionmysql_connect("$sql_host""$sql_usuario""$sql_pass") or die(header ("Location:  $redir?error_login=0"));
        
mysql_select_db("$sql_db");

        
//echo "Estamos conectados a = $sql_db </br>";

        //comprobamos que el usuario no existe en la db
        
$usuario_consulta=mysql_query("SELECT nick FROM users WHERE nick='$user'");
        
        if (
mysql_num_rows($usuario_consulta) != 0){ //SI el usuario ESTA en la BD
            
echo "Este usuario ya existe </br>";
            }
        
        else{ 
// si el usuario NO ESTA en la BD continuamos
            
if($user_ok=mysql_fetch_array($usuario_consulta)){
                
mysql_free_result($usuario_consulta); //liberamos la memoria del query a la db
                
}
            else{
                
//quitamos todo el codigo malicioso de las demas variables del form de registro
                
$email stripslashes($email);
                
$email strip_tags($email);
                
                
$rollo stripslashes($rollo);
                
$rollo strip_tags($rollo);
                
$rollo str_replace("\n\r","<br>",$rollo); //se cambian los saltos de linea por <br>
                
$rollo str_replace("\r\n","<br>",$rollo);
                
$rollo str_replace("\n","<br>",$rollo);
                
                
date_default_timezone_set("Europe/Madrid");
                
$fecha date("y/m/d H:i:s");
                
//echo "fecha = $fecha";
                
$level "2"//usaremos level 1 para admins, level 2 para los demas
                
                //introducimos el nuevo registro en la tabla users
                
mysql_query("INSERT INTO users (nick,pass,email,fecha,level,rollo) values ('$user','$pass','$email','$fecha','$level','$rollo') ");
                echo 
"Usuario registrado con éxito </br>";
                }
            
            }    
        }
}
    
?>
Varias preguntas...
1) Qué tal véis la seguridad?

2) Hago bien recibiendo las variables del formulario con un trim al principio de todo?

3) Quiero insertar en mi base de datos la fecha y hora en la que se hizo el registro, pero no lo consigo.
Con que formato tengo que definir el campo en la base de datos? y como llamo a la funcion data en php para que no se me queje la base de datos

4) No me funciona las redirecciones, tipo
Header("Location: registro.php");

No se hace así para que vaya a la pagina de registro? estando esta en el directorio actual del script?


Gracias de antemano!

PD: Gracias a vosotros voy adelantando cada día un poco mas
El problema del header lo he solucionado. Al parecer habia espacios en blanco o saltos de lineas, entre mis codigos php y por eso no iba. ARREGLADO


Añado otra duda más, a la numero 1,2 y 3 xD

Quiero que determinados campos sean obligatorios, en mi formulario y si no se introducen o se introducen campos equivocados, muestre un error al usuario.

Pero que no sea una ventana emergente de error, sino que sea algo dentro del propio formulario como por ejemplo escribir arriba lo que se ha puesto mal, y/o señalar en rojo la caja de texto donde esta el error.

Lo he visto infinidad de veces en muchos formularios de la red, pero no se como se consigue eso. Quizá sean diferentes páginas con diferentes errores?
No se, es la única que se me ocurre que sabría hacer... pero me parece un poco cutre...
Porque si el formulario es muy grande, las combinaciones de campos erroneos pueden ser tremendas...

Asi que supongo que habrá una solución mas viable. Cuál es? xD

Merciii
  #6 (permalink)  
Antiguo 10/01/2008, 09:07
 
Fecha de Ingreso: junio-2006
Mensajes: 270
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: No se conecta a la base de datos

¿No sabews imprimir datos por pantalla con php?
Es decir: echo ´bla, bla'
Pues con eso haces tu pantalla de error. O directamente die 'bla, bla' (para dejar de ejecutar el php imprimiendo bla, bla)
Lo de los campos obligatorios, lo suyo es con javascript y comprobacion tambien con php. En php, if (campo != esperado) die ("Error");
  #7 (permalink)  
Antiguo 10/01/2008, 10:06
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Re: No se conecta a la base de datos

Cita:
4) No me funciona las redirecciones, tipo
Header("Location: registro.php");

No se hace así para que vaya a la pagina de registro? estando esta en el directorio actual del script?
SI! o bien registro.php esta en el mismo directorio o bien pones una ruta absoluta o relativa a donde esté. Ej: Header("Location: ..\registro.php"); [creo]
__________________
Salu2!
  #8 (permalink)  
Antiguo 10/01/2008, 10:12
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Re: No se conecta a la base de datos

Cita:
Iniciado por darkxer0x Ver Mensaje
¿No sabews imprimir datos por pantalla con php?
Es decir: echo ´bla, bla'
Pues con eso haces tu pantalla de error. O directamente die 'bla, bla' (para dejar de ejecutar el php imprimiendo bla, bla)
Lo de los campos obligatorios, lo suyo es con javascript y comprobacion tambien con php. En php, if (campo != esperado) die ("Error");
Pero mi duda es, si ponerlo en el propio formulario o en el archivo.php del action.

Como se hace habitualmente?

Y lo de encriptar el password, se refiere a cuando lo guardas en la base de datos no? es decir...

Pido al usuario sus datos, pulsa registrar y los datos se envian a través del action del formulario a un .php
En ese .php que en mi caso es el que está en este hilo, es donde tengo que hacer las comprobaciones de si el nick esta vacio, si el usuario existe, etc... no?

Entonces en cada uno de los errores tengo que generar una pagina completa como la (del formulario de registro) agregando arriba los errores producidos?

Es así como se hace? :S

Mercii
  #9 (permalink)  
Antiguo 10/01/2008, 11:40
 
Fecha de Ingreso: octubre-2006
Mensajes: 173
Antigüedad: 17 años, 6 meses
Puntos: 3
Re: No se conecta a la base de datos

hola aquí tienes un ejemplo simple para que tengas una idea
de como mostrar un mensaje al lado de una casilla de texto si un campo esta vasillo
tan bien lo puedes usar en una pagina recibe.php.
o hacerlo de otra forma.

Código PHP:
<?php
if(isset($_POST['name'])){
$name$_POST['name'];
}
if(isset(
$_POST['name2'])){
$name2$_POST['name2'];
if(
$name == ''){ 
$error'<font color="red"><b>El campo Nombre esta vasillo</b></font>';
 }
//else{
//echo $name,'<br>',$name2;
// }
}
?>

<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
Campo Requerido *<input type="text" name="name"><?php global $error; echo $error;?>
<br>Campo no obligatorio<input type="text" name="name2">
<button name="Enviar" type="submit">Enviar</button>
</form>
y para escritor una contraseña con (md5) y insertarlo en la db lo único que tienes
que hacer es esto
$scri= md5($name);
echo $scri;

ejemplo,
y en ves de pasar esto, $name a la db, le pasas esto $scri..
__________________
¨
  #10 (permalink)  
Antiguo 10/01/2008, 14:08
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Re: No se conecta a la base de datos

Cita:
Iniciado por toforo Ver Mensaje
hola aquí tienes un ejemplo simple para que tengas una idea
de como mostrar un mensaje al lado de una casilla de texto si un campo esta vasillo
tan bien lo puedes usar en una pagina recibe.php.
o hacerlo de otra forma.

Código PHP:
<?php
if(isset($_POST['name'])){
$name$_POST['name'];
}
if(isset(
$_POST['name2'])){
$name2$_POST['name2'];
if(
$name == ''){ 
$error'<font color="red"><b>El campo Nombre esta vasillo</b></font>';
 }
//else{
//echo $name,'<br>',$name2;
// }
}
?>

<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
Campo Requerido *<input type="text" name="name"><?php global $error; echo $error;?>
<br>Campo no obligatorio<input type="text" name="name2">
<button name="Enviar" type="submit">Enviar</button>
</form>
y para escritor una contraseña con (md5) y insertarlo en la db lo único que tienes
que hacer es esto
$scri= md5($name);
echo $scri;

ejemplo,
y en ves de pasar esto, $name a la db, le pasas esto $scri..

Aaahhhhhh vale valee

Para que lo haga en la misma pagina sin tener que generar otra se hace de esa manera en el atributo ACTION = <?php echo $_SERVER['PHP_SELF'];?>

Y para coger las variables de la pagina activa se hace con la instrucción
<?php global $error; echo $error;?>

Merciiiiiii

PD: lo del password, paso las variables por post al "enviar_datos_registros.php" y ya allí la encripto no? No hace falta que utilice este metodo de recargar la propia página no?
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 16:08.