Foros del Web » Programando para Internet » PHP »

Funciona en servidor local y falla al subirlo al servidor.

Estas en el tema de Funciona en servidor local y falla al subirlo al servidor. en el foro de PHP en Foros del Web. Hola a todos Tengo un problemilla con un script q he creado para agregar usuarios... ME funciona perfectamente en el servidor local q tengo (con ...
  #1 (permalink)  
Antiguo 12/11/2006, 11:30
 
Fecha de Ingreso: mayo-2005
Mensajes: 109
Antigüedad: 18 años, 11 meses
Puntos: 0
Funciona en servidor local y falla al subirlo al servidor.

Hola a todos

Tengo un problemilla con un script q he creado para agregar usuarios... ME funciona perfectamente en el servidor local q tengo (con easy php) y al subirlo al servidor remoto (de resellerzoom) no funciona...

El script s el siguiente...

Código PHP:
$server="localhost";
$database="mi db";
$dbpass="mi pass"
$dbuser="miuser"
//comprovar usuari
$query="SELECT * FROM usuarios WHERE login='$login'";
$link=mysql_connect($server,$dbuser,$dbpass);
$result=mysql_db_query($database,$query,$link);
if(
mysql_num_rows($result)){
echo 
"Aquest email ja esta registrat.";
} else {
mysql_free_result($result);

//entrar dades...-
$query="INSERT INTO usuarios VALUES ('null','$ips','$login','$pass')";
$result=mysql_db_query($database,$query,$link);
if(
mysql_affected_rows($link)){
echo 
"Usuario introducido correctamente";


I el error que me devuelve es el siguiente...
Código:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/bepserve/public_html/sms/crea_user2.php on line 13

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /home/bepserve/public_html/sms/crea_user2.php on line 16
Ah por cierto las lineas son:
linea 13: if(mysql_num_rows($result)){
linea 16: mysql_free_result($result);

Qué es lo que esta passando? Puede ser por las versiones del php?

Gracias i un saludo!
  #2 (permalink)  
Antiguo 12/11/2006, 14:04
Avatar de bistoco  
Fecha de Ingreso: marzo-2006
Mensajes: 141
Antigüedad: 18 años, 1 mes
Puntos: 0
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/bepserve/public_html/sms/crea_user2.php on line 13

if(mysql_num_rows($result)){

eso kiere decir ke $result , no es un recurso mysql valido , o sea ke la consulta no te esta dedvolviendo lo ke tu kieres

supongo ke kuando subiste tu programa al servidor cambiaste las variables de conexiona la base de datos y utilizas las ke te dio el host...cierto??

$server="localhost";
$database="mi db";
$dbpass="mi pass";
$dbuser="miuser";


si esto esta bien ,lo ideal seria ke probaras la query en phpmyadmin, y ahi hagas los cambios necesarios

saludos
__________________
Share what you know...learn what you don't :si:
  #3 (permalink)  
Antiguo 12/11/2006, 14:37
 
Fecha de Ingreso: mayo-2005
Mensajes: 109
Antigüedad: 18 años, 11 meses
Puntos: 0
Si, los datos son correctos... estoy dandole vueltas pero no encuentro nada...

¿Puede ser que la versión de phpmyadmin del host sea muy vieja.. phpMyAdmin - 2.8.0.2 ?

Saludos!
  #4 (permalink)  
Antiguo 13/11/2006, 11:16
 
Fecha de Ingreso: mayo-2005
Mensajes: 109
Antigüedad: 18 años, 11 meses
Puntos: 0
Ah i otro asunto...

Envio correos con la función mail de php... pero el problema es que al enviarlos a gmail por ejemplo, se envian a correo no deseado... alguna solución?


Saludos


PD: Aun no he encontrado la solución al error de mysql que expongo en la primera parte del post.
  #5 (permalink)  
Antiguo 13/11/2006, 11:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por glayvin Ver Mensaje
Si, los datos son correctos... estoy dandole vueltas pero no encuentro nada...

¿Puede ser que la versión de phpmyadmin del host sea muy vieja.. phpMyAdmin - 2.8.0.2 ?

Saludos!
Las conexiones a la BBDD se hacen una por script (a no ser que realmente cambies de BBDD).

No deberías usar:
$result=mysql_db_query($database,$query,$link);

Sino mysql_select_db() y mysql_query() por separado.

Usa mysql_error() para ver el real problema con SQL o conexión que tengas:
Código PHP:
mysql_select_db($database,$link);
$result=mysql_query($query,$link) or die (mysql_error()); 
Y asegurate de que $query toma el valor real de la consulta SQL a ejecutar .. sobre todo por qué usas ahí una variable $login que lo más probable es que no tome su valor correcto pues deberías accederla tipo:

Código PHP:
$query="SELECT * FROM usuarios WHERE login='".mysql_real_escape_string($_POST['login'])."'"
Usé metodo "POST" .. pues no se observa el formulario HTML que usas para ver su "method".

Por otro lado, la versión de un "GUI" para Mysql no tiene nada que ver, aquí lo que mandaría sería la versión de Msyql que es el "motor de Base de datos" real que usas .. phpMyadmin no es más que un "administrador" .. como pueda ser otro cualquiera.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 13/11/2006, 13:18
 
Fecha de Ingreso: mayo-2005
Mensajes: 109
Antigüedad: 18 años, 11 meses
Puntos: 0
Muchas gracias por la respuesta.. en cuanto al form en html es este:
Aqui envias tu usuario i se te envia una contraseña aleatoria automàtica y también queda registrada la ip.

Código PHP:
<form id="form1" name="form1" method="post" action="crea_user.php">
  <input name="login" id="login" type="text" />
   <input name="pass" type="hidden" id="pass" value="<? 
$str 
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
$cad "";
for(
$i=0;$i<12;$i++) {
$cad .= substr($str,rand(0,62),1);
}
print 
$cad;
?>"/> 
<input name="ip" type="hidden" id="pass" value="<?
error_reporting
(0);

function 
getRealIP()
{
   
   if( 
$_SERVER['HTTP_X_FORWARDED_FOR']!= '' )
   {
      
$client_ip =
         ( !empty(
$_SERVER['REMOTE_ADDR']) ) ?
            
$_SERVER['REMOTE_ADDR']
            :
            ( ( !empty(
$_ENV['REMOTE_ADDR']) ) ?
               
$_ENV['REMOTE_ADDR']
               :
               
"unknown" );
   
      
// los proxys van añadiendo al final de esta cabecera
      // las direcciones ip que van "ocultando". Para localizar la ip real
      // del usuario se comienza a mirar por el principio hasta encontrar
      // una dirección ip que no sea del rango privado. En caso de no
      // encontrarse ninguna se toma como valor el REMOTE_ADDR
   
      
$entries split('[, ]'$_SERVER['HTTP_X_FORWARDED_FOR']);
   
      
reset($entries);
      while (list(, 
$entry) = each($entries))
      {
         
$entry trim($entry);
         if ( 
preg_match("/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/"$entry$ip_list) )
         {
            
// http://www.faqs.org/rfcs/rfc1918.html
            
$private_ip = array(
                  
'/^0\./',
                  
'/^127\.0\.0\.1/',
                  
'/^192\.168\..*/',
                  
'/^172\.((1[6-9])|(2[0-9])|(3[0-1]))\..*/',
                  
'/^10\..*/');
   
            
$found_ip preg_replace($private_ip$client_ip$ip_list[1]);
   
            if (
$client_ip != $found_ip)
            {
               
$client_ip $found_ip;
               break;
            }
         }
      }
   }
   else
   {
      
$client_ip =
         ( !empty(
$_SERVER['REMOTE_ADDR']) ) ?
            
$_SERVER['REMOTE_ADDR']
            :
            ( ( !empty(
$_ENV['REMOTE_ADDR']) ) ?
               
$_ENV['REMOTE_ADDR']
               :
               
"unknown" );
   }
   
   return 
$client_ip;
   
}

$ips getRealIP();

echo 
"$ips"

?>"/>
</form>

I login si que toma su valor correcto, antes de esas lineas he omitido estas que tambien estan en el script: (para cojer el valor de login, de ips i de pass.

Código PHP:
$ips$_POST["ip"];
$pass$_POST["pass"];
$login$_POST["login"]; 
Lo que queria conseguir era comprobar que no existia ningun login con ese nombre. A parte de eso si que deberia utilizar mysql_real_escape_string, para prevenir injecciones sql. Ahora cuando consiga que funcione pulire el codigo. I de todas maneras lo que no entiendo es porque en mi servidor local me funciona perfectamente i al subirlo no..

Última edición por glayvin; 13/11/2006 a las 13:30
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 18:22.