Foros del Web » Programando para Internet » PHP »

Consulta con php a mysql

Estas en el tema de Consulta con php a mysql en el foro de PHP en Foros del Web. Hola muy buenas! Estoy trabajando en un script que en principio es un formulario en el que se ingresan X datos para ser insertados en ...
  #1 (permalink)  
Antiguo 25/05/2008, 15:09
 
Fecha de Ingreso: octubre-2006
Mensajes: 18
Antigüedad: 17 años, 5 meses
Puntos: 0
Consulta con php a mysql

Hola muy buenas!
Estoy trabajando en un script que en principio es un formulario en el que se ingresan X datos para ser insertados en una mysql, hasta ahí bien.

Ahora, lo que quiero es que en ese formulario a parte de ingresar esos datos a ser insertados en mysq, haya que insertar el usuario y contraseña de un foro smf para que, si el usuario y contraseña son incorrectos, no inserte los otros datos.

Que logro con esto? pues evidentemente que quien no esté registrado en el foro no pueda insertar los otros datos...

El problema es que nose como hacerlo...
Tengo un index.php que es donde tengo el formulario, que manda los datos a un registerprocess.php en el cual los recoge...
Ahora en el registerprocess.php tengo que hacer 2 conexiones a bases de datos en distintos servidores, una al foro smf para comprobar el usuario y contraseña, y otra al otro mysql para insertar los datos en el supuesto de que el usuario y contraseña sean correctos...

He intentado usar el mysql_num_rows pero como no tengo ni idea pues tampoco he logrado nada...

Aqui os dejo el codigo de registerprocess.php ya que el index.php está bien, no tiene misterio alguno :)

PD: para obtener los datos de las mysql se conecta a dos .php distintos llamados "config.php" y "configforo.php" a través de include('');

Código PHP:
<html>
<head>
<title>Registration Results</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>

<?php
require('header.php');
?>
<br>
<div class="title">Resultados del Registro</div>
<?php
error_reporting
(E_ALL & ~E_NOTICE);

//Data here from form
$username $_POST['username']; //Gets the username
$password $_POST['password']; //Gets the password
$sex $_POST['sex']; //Gets the gender
$email $_POST['email']; //Gets the email address
$image $_POST['image']; //Gets the actual image numbers
$imageverify $_POST['imageverify']; //Gets the image numbers
$usernameforo $_POST['usernameforo']; //Consigue el user del foro
$passwordforo $_POST['passwordforo']; //Consigue la pass del user del foro

$coded "Copyright XXXX.net 2008";

if(empty(
$username) || empty($password) || empty($sex) || empty($email) || empty($imageverify)){ //If player has not filled in all required fields, print this message:
echo "<div class=\"results\">";
echo 
"Rellena todos los huecos!!!!<br>";
echo 
"Regresar a <a href=\"index.php\">XXXX.net creación de cuentas</a>.";
echo 
"</div>";
die(
"<div class=\"center\">$coded</div>"); //Stop the script.
//If player has filled in all required fields, continue.

if($reg_userpass_same == '1'){ //If the option for 'Can username and the password be same' is on,
    
if($username == $password){ //And if the username is same as the password, print this message:
        
echo "<div class=\"results\">";
        echo 
"El nombre de usuario no puede ser el mismo que la contraseña!<br>";
        echo 
"Regresar a <a href=\"index.php\">XXXX.net creación de cuentas</a>.";
        echo 
"</div>";
        die(
"<div class=\"center\">$coded</div>"); //Stop the script
    
//If password is not the same as the username, continue.
//If the option for 'Can username and the password be same' is off, continue.

if(!ereg("[a-z||0-9]"$username)){ //If the username entered is not valid (Alphanumerals), print this message:
echo "<div class=\"results\">";
echo 
"Nombre de usuario inválido! Solo caracteres alfanuméricos.<br>";
echo 
"Regresar <a href=\"index.php\">XXXX.net creación de cuentas</a>.";
echo 
"</div>";
die(
"<div class=\"center\">$coded</div>"); //Stop the script
//If the username is valid, continue.

if(!ereg("[a-z||0-9]@[a-z||0-9].[a-z]"$email)){ //If the email entered is not valid, print this message.
echo "<div class=\"results\">";
echo 
"Tu dirección de e-mail es inválida!<br>";
echo 
"Regresar a <a href=\"index.php\">XXXX.net creación de cuentas</a>.";
echo 
"</div>";
die(
"<div class=\"center\">$coded</div>"); //Stop the script
//If the email address is valid, continue.

if($reg_md5 == '1'){ //If the option 'MD5 passwords' is on, encrypt the password with MD5.
$password md5($password);
//If not, continue.

if($image != $imageverify){ //If the actual image number is not the same the user inputed, print this message.
echo "<div class=\"results\">";
echo 
"Has introducido mal los caracteres de la imagen de verificación!<br>";
echo 
"Regresar a <a href=\"index.php\">XXXX.net creación de cuentas</a>.";
echo 
"</div>";
die(
"<div class=\"center\">$coded</div>"); //Stop the script
//If it is the same, continue.


?>
/* AQUI EMPIEZA LOGUEO AL FORO */

<?php
include('configforo.php'); //Pilla los datos de la db de configforo.php

$conex mysql_connect("$sql_host""$sql_user""$sql_pass"); //Conecta con la db del foro

if(!$conex){ //Si la conexion falla, Poner lo siguiente.
echo "<div class=\"results\">";
echo 
"Ha fallado la creación de la cuenta: ".mysql_error()."<br>"//Pone la razon del error
echo "Regresar a <a href=\"index.php\">XXXX.net creación de cuentas</a>";
echo 
"</div>";
die(
"<div class=\"center\">$coded</div>"); //Parar el script.
//Si la conexion se establece, continuar.


if(!mysql_select_db("$sql_db"$conex)){ //Si falla seleccion de db, poner lo siguiente.
echo "<div class=\"results\">";
echo 
"Falló el registro de la cuenta: ".mysql_error()."<br>"//Pone la razon del error.
echo "Regresar a <a href=\"index.php\">XXXX.net creación de cuentas</a>";
echo 
"</div>";
die(
"<div class=\"center\">$coded</div>"); //Parar el script.
//Si la conexion se establece, continuar.



if($log_md5 == '1'){ //If the option 'MD5 passwords' is on, encrypt the password with MD5.
$passwordforo md5($passwordforo);
//If not, continue.


$checkuserpass mysql_query("SELECT memberName,passwd FROM smf_members WHERE memberName LIKE '$usernameforo' AND passwd LIKE '$passwordforo'",$conex);
$resultado mysql_query($checkuserpass); //Ejecuta la query

if (mysql_num_rows($resultado) < 0){


echo 
"Falló el registro porque: ";
echo 
"El usuario o contraseña del foro no coinciden con los que has ingresado.<br>";
echo 
"Regresar a <a href=\"index.php\">XXXX.net creación de cuentas</a>";
echo 
"</div>";
die(
"<div class=\"center\">$coded</div>"); // Para el script
//Si coinciden el user y pass, continua


mysql_close($conex);
?>

/* AKI TERMINA EL LOGUEO AL FORO */
<?php

include ('config.php'); //Gets the configuration file

$conn mysql_connect("$sql_host""$sql_user""$sql_pass"); //Connect to MySQL Server

if(!$conn){ //If the connection failed, print this message.
echo "<div class=\"results\">";
echo 
"Ha fallado la creación de la cuenta: ".mysql_error()."<br>"//Print out the reason of the error
echo "Regresar a <a href=\"index.php\">XXXX.net creación de cuentas</a>";
echo 
"</div>";
die(
"<div class=\"center\">$coded</div>"); //Stop the script.
//If the connection suceeded, continue.

if(!mysql_select_db("$sql_db"$conn)){ //If failed to select the database, print this message.
echo "<div class=\"results\">";
echo 
"Falló el registro de la cuenta: ".mysql_error()."<br>"//Print out the reason of the error.
echo "Regresar a <a href=\"index.php\">XXXX.net creación de cuentas</a>";
echo 
"</div>";
die(
"<div class=\"center\">$coded</div>"); //Stop the script.
//If the database selection succeeded, continue.

//Email checking module fixed by Cypress.
$checkemail "SELECT email FROM login WHERE email LIKE '$email'"//The email checking query
$result mysql_query($checkemail);  //Runs the query.

if (mysql_num_rows($result) > 0){ //If the email address exists, print this messsage.
echo "<div class=\"results\">";
echo 
"Falló el registro porque: ";
echo 
"Este e-mail ya ha sido registrado.<br>";
echo 
"Regresar a <a href=\"index.php\">XXXX.net creación de cuentas</a>";
echo 
"</div>";
die(
"<div class=\"center\">$coded</div>"); //Stop the script.
//If not, continue.

//Username checking module fixed by Cypress.
$checkuserid "SELECT userid FROM login WHERE userid LIKE '$username'"//The username checking query
$result mysql_query($checkuserid); //Runs the query.

if (mysql_num_rows($result) > 0){ //If the username exists, print this message.
echo "<div class=\"results\">";
echo 
"Falló el registro porque: ";
echo 
"El nombre introducido ya ha sido usado.Por favor vuelve atrás y prueba de nuevo.<br>";
echo 
"Regresar a <a href=\"index.php\">XXXX.net creación de cuentas</a>";
echo 
"</div>";
die(
"<div class=\"center\">$coded</div>");
//If the username does not exist, continue.


$query mysql_query("INSERT INTO login(userid, user_pass, sex, email, level) VALUES ('$username', '$password', '$sex', '$email', 0)"); //Query to insert the data into the database.

if(!$query){ //If the query fails, print this message:
echo "<div class=\"results\">";
echo 
"Falló el registro porque: ".mysql_error()."<br>"//Print out the reason of the error.
echo "Regresar a <a href=\"index.php\">XXXX.net creación de cuentas</a>"
echo 
"</div>";
die(
"<div class=\"center\">$coded</div>"); //Stop the script.
}

echo 
'Registro Completado Con Éxito.'//If all goes well, print this message.

?>
</body>
</html>
Gracias por adelantado :)
  #2 (permalink)  
Antiguo 25/05/2008, 15:18
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: Consulta con php a mysql

HOLA

Prueba igualando a cero

if (mysql_num_rows($resultado) == 0){
  #3 (permalink)  
Antiguo 25/05/2008, 15:39
 
Fecha de Ingreso: octubre-2006
Mensajes: 18
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Consulta con php a mysql

Cita:
Iniciado por jaronu Ver Mensaje
HOLA

Prueba igualando a cero

if (mysql_num_rows($resultado) == 0){
Ahora me da este error:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/innovac/public_html/cuentas/registerprocess.php on line 110
Falló el registro porque: El usuario o contraseña del foro no coinciden con los que has ingresado.

Ponga bien o mal el usuario y contraseña me dice eso...

Tampoco se si la sentencia SQL está bien hecha...

Tiene que comparar el nick y el password, que el password está evidentemente en la misma fila del sql que el nick pero en distinta columna...

Nose si estará bien, lo que si está bien es el nombre de las columnas "memberName" y "passwd" de la tabla "smf_members".

Saludos!
  #4 (permalink)  
Antiguo 25/05/2008, 16:57
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: Consulta con php a mysql

hola

prueba asi:

Código PHP:
$checkuserpass mysql_query("SELECT memberName,passwd FROM smf_members WHERE memberName = '$usernameforo' AND passwd = '$passwordforo'",$conex); 
$resultado mysql_query($checkuserpass); //Ejecuta la query 
Un saludo
  #5 (permalink)  
Antiguo 25/05/2008, 17:00
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: Consulta con php a mysql

creo que tienes varios errores

Cita:


$checkuserpass = "SELECT memberName,passwd FROM smf_members WHERE memberName = '$usernameforo' AND passwd = '$passwordforo'"
$resultado = mysql_query($checkuserpass,$conex); ); //Ejecuta la query

if (mysql_num_rows($resultado) < 0){
esta es, creo, la sintaxis correcta del query
  #6 (permalink)  
Antiguo 25/05/2008, 17:32
Avatar de lucasan
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: Cali - Colombia
Mensajes: 1.144
Antigüedad: 16 años, 10 meses
Puntos: 59
Respuesta: Consulta con php a mysql

Código PHP:
<?php
$checkuserpass 
"SELECT memberName,passwd FROM smf_members WHERE memberName = '$usernameforo' AND passwd = '$passwordforo'";
$resultado mysql_query($checkuserpass,$conex ); //Ejecuta la query

if (@mysql_num_rows($resultado) == 0){ }
?>
Ahora si veo bien esa consulta, no puede ser < 0 porque estariamos hablando de un valor negativo.

Solo se comprueba si igual a 0 el numero de filas, ya que en este caso no existiría el usuario.

Ahora, el warning que te muestra es porque el resultado de mysql_num_rows es igual a 0, para eso es la @ junto a la consulta, es decir no te muestra el warning.
__________________
Plan Original Desarrollo Web
~$>sudo apt-get install -f
"Asi debería arreglarse todo en la vida"
  #7 (permalink)  
Antiguo 25/05/2008, 19:15
 
Fecha de Ingreso: octubre-2006
Mensajes: 18
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Consulta con php a mysql

Cita:
Iniciado por lucasan Ver Mensaje
Código PHP:
<?php
$checkuserpass 
"SELECT memberName,passwd FROM smf_members WHERE memberName = '$usernameforo' AND passwd = '$passwordforo'";
$resultado mysql_query($checkuserpass,$conex ); //Ejecuta la query

if (@mysql_num_rows($resultado) == 0){ }
?>
Ahora si veo bien esa consulta, no puede ser < 0 porque estariamos hablando de un valor negativo.

Solo se comprueba si igual a 0 el numero de filas, ya que en este caso no existiría el usuario.

Ahora, el warning que te muestra es porque el resultado de mysql_num_rows es igual a 0, para eso es la @ junto a la consulta, es decir no te muestra el warning.
Ya puse asi todo y ahora no me tira ese error...
Pero lo que sucede ahora es que ponga el user y pass que ponga, siempre me dice que son incorrectos...

Si veis el código un poco más arriba de la consulta SQL hay una parte en la que puse una cosa para pasar $passwordforo a MD5, nose si estará bien o que...
  #8 (permalink)  
Antiguo 25/05/2008, 19:49
 
Fecha de Ingreso: octubre-2006
Mensajes: 18
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Consulta con php a mysql

Creo que el error está en que SMF Forum no encripta en MD5 exactamente...
Pero no consigo descifrar como encripta...

Aqui os dejo el archivo de Login de SMF para ver si vosotros conseguis saber como leñes encripta, ya que por google no he encontrado nada...(mirad a que hora pongo el post XDDD):

Lo pongo en link porque aqui no cabe de lo largo que es, aunque la parte válida probablemente sea al final...

http://usuarios.lycos.es/drak91/LogInOut.txt


Saludos y muchas gracias.
  #9 (permalink)  
Antiguo 26/05/2008, 08:33
 
Fecha de Ingreso: octubre-2006
Mensajes: 18
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Consulta con php a mysql

Alguna idea?

Yo sigo investigando pero no hay manera...
  #10 (permalink)  
Antiguo 28/05/2008, 15:36
 
Fecha de Ingreso: octubre-2006
Mensajes: 18
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Consulta con php a mysql

Sigo esperando algun alma caritativa que me ayude con esto ajajaj
  #11 (permalink)  
Antiguo 28/05/2008, 16:24
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Consulta con php a mysql

Hola drak91,

El código que expones esta un poco confuso ya que usa muchos métodos para hacer login, usa crypt, sha1, y md5, pero los usar variados, y en desorden, por lo que no vas a poder simplemente hacer el login que quieres usando md5.

Saludos.
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 01:55.