Foros del Web » Programando para Internet » PHP »

Me funciona en localhost pero al subirlo al servidor contratado se chafa...

Estas en el tema de Me funciona en localhost pero al subirlo al servidor contratado se chafa... en el foro de PHP en Foros del Web. Hola, he hecho un proyecto de pagina web con base de datos php etc y funciona todo perfecto en localhost pero ahora lo he subido ...
  #1 (permalink)  
Antiguo 30/08/2006, 03:23
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 1 mes
Puntos: 0
Me funciona en localhost pero al subirlo al servidor contratado se chafa...

Hola, he hecho un proyecto de pagina web con base de datos php etc y funciona todo perfecto en localhost pero ahora lo he subido a un espacio web contratado y ya da problemas....me da estos warning al ingresar el administrador de la aplicación...

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/nogues/nogues-www/admin/ingresar_admin.php on line 39

Warning: Cannot modify header information - headers already sent by (output started at /home/nogues/nogues-www/admin/ingresar_admin.php:9) in /home/nogues/nogues-www/admin/ingresar_admin.php on line 74

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /home/nogues/nogues-www/admin/ingresar_admin.php on line 76

y la clase en la que la da es esta

<?php
include("../conectarse_bd.php");
$link=Conectarse();


function quitar($mensaje)
{
$mensaje = str_replace("<","&lt;",$mensaje);
$mensaje = str_replace(">","&gt;",$mensaje);
$mensaje = str_replace("\'","'",$mensaje);
$mensaje = str_replace('\"',"&quot;",$mensaje);
$mensaje = str_replace("\\\\","&#92",$mensaje);
return $mensaje;
}

if(trim($HTTP_POST_VARS["login"]) != "" && trim($HTTP_POST_VARS["pass"]) != "")
{


$nickN = quitar($HTTP_POST_VARS["login"]);
$passN = quitar($HTTP_POST_VARS["pass"]);



$result = mysql_query("SELECT pass FROM admin WHERE login='$nickN'");
if($row = mysql_fetch_array($result))
{

if($row["pass"] == $passN)
{

setcookie("usNick",$nickN,time()+7776000);
setcookie("usPass",$passN,time()+7776000);



?>
<SCRIPT LANGUAGE="javascript">
location.href = "panel_admin.php";
</SCRIPT>
<?

}
else
{
header("Location: error.php");
}
}
else
{
header("Location: error.php");
}
mysql_free_result($result);
}
else
{
header("Location: error.php");
}
mysql_close();
?>

a ver si me podeis hechar un vistazo y ayudar, Gracias de antemano
  #2 (permalink)  
Antiguo 30/08/2006, 05:40
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
has subido las base de datos?
para extraer la base de datos:

Código:
mysqldump -u root -pTuPassword nombre_de_la_base_de_datos > archivo.sql
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #3 (permalink)  
Antiguo 30/08/2006, 06:23
Avatar de the_scorpion  
Fecha de Ingreso: mayo-2006
Ubicación: Cuba
Mensajes: 696
Antigüedad: 17 años, 11 meses
Puntos: 3
Hola

Pregunto:
- Subiste las BD
- Tienes conexión con tu BD

Código PHP:
 $dbhost "server";
 
$dbnombre "bd";
 
$dbusuario "root";
 
$dbpassword "password";
 echo 
"esto trabaja de maravilla"


 
$link mysql_connect($dbhost$dbusuario$dbpassword );
 
mysql_select_db($dbnombre) or die("No puedo seleccionar la bd."); 
echo para probar la conexion con la BD
__________________
Que hablen mal de uno es espantoso. Pero hay algo peor: que no hablen.
Quien hace, puede equivocarse. Quien nada hace, ya está equivocado".
  #4 (permalink)  
Antiguo 30/08/2006, 06:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Usa mysql_error() para detectar problemas de SQL o de conexión:
Código PHP:
$result mysql_query("SELECT pass FROM admin WHERE login='$nickN'") or die (mysql_error()); 
No uses (o por lo menos como lo aplicas textualmente):
Código PHP:
if($row mysql_fetch_array($result)) 
realmente eso sólo te va a validar que se "ejecutó" la función que devuelve en un array el resultado obtenido por su ejecución de tu consulta SQL.

Lo que se debe hacer es "ver" si el n° de resultados obtenidos es lo que esperas (1 .. 0 o > 0 )

Código PHP:
if (mysql_num_rows($result)){
  
// ejecutas tus mysql_fetch_array() .. etc... En general "accedes al resultado".
} else {
  
// No hay resultados .. (pese que la consulta SQL se puea haber ejecutado correctamente ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 30/08/2006, 15:48
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 1 mes
Puntos: 0
Si tengo conexion al servidor y si tengo creada la base de datos, mañana os explico un poco mejor porque me da rabia que no funcione al subirla....Gracias por la ayuda.
  #6 (permalink)  
Antiguo 30/08/2006, 15:58
 
Fecha de Ingreso: noviembre-2003
Mensajes: 50
Antigüedad: 20 años, 4 meses
Puntos: 1
as
comprobado que $nickN tenga valor?

para solucionar el tema de las cabeceras pon: ob_start() ; al principio de todo y ob_flush() ; al final de todo
  #7 (permalink)  
Antiguo 30/08/2006, 17:49
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 BiGloOl Ver Mensaje
as
comprobado que $nickN tenga valor?

para solucionar el tema de las cabeceras pon: ob_start() ; al principio de todo y ob_flush() ; al final de todo
No veo buena soluciòn usar las funciones de control del buffer de PHP para una taréa que se solventa simplemente re-ordenando el código para no producir una "salida" de HTML/javascirpt/etc donde no corresponde según el flujo y sentido de un envio de cabeceras HTTP como las de "location" (redirección).

De todas formas en este caso .. es el própio mensaje de error originando sobre el problema con Mysql es que seguidamente "revienta" a continuaciòn con el de cabeceras y asì sucesivamente con el resto.

Por eso una instrucciòn tipo "die()" dá un mensaje y termina la ejecuciòn del script en ese punto para no ir desencadenando más errores sub-siguientes.

Viendo y solventando el problema de la consulta SQL que si se usa mysql_error() se verà (según propongo màs arriba) .. solucionado ese problema el resto ya no deben aparecer.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 31/08/2006, 00:05
 
Fecha de Ingreso: noviembre-2003
Mensajes: 50
Antigüedad: 20 años, 4 meses
Puntos: 1
Ueno aveces no es tan facil reordenar el codigo.. y.. pozi.. tienes toda la razon del mundo.. he respondido to rapido casi sin mirar.
  #9 (permalink)  
Antiguo 05/09/2006, 04:23
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 1 mes
Puntos: 0
Hable con los del hosting porque me mosquea q mi proyecto diera fallos y me dicen q es problema de mi codigo, que pruebe a crear desde su phpmyadmin la base de datos y meta los registros desde ahi tambien y eso es una chapuza que no me vale,yo tengo una clase para crear la base de datos y el administrador por defecto en php que con ejecutarla vale pero ahi ya me da fallo... toy desesperado, yo pongo la mano en el fuego por mi codgigo
  #10 (permalink)  
Antiguo 05/09/2006, 04:27
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Código PHP:
$result mysql_query("SELECT pass FROM admin WHERE login='$nickN'"); 
deberia ser:
Código PHP:
$result mysql_query("SELECT pass FROM admin WHERE login='$nickN'",$link); 
Edito:
y reemplaza $HTTP_POST_VARS por $_POST

Edito:
y reemplaza <? por <?php

suerte!!!!
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #11 (permalink)  
Antiguo 05/09/2006, 04:32
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 17 años, 9 meses
Puntos: 0
Cita:
Iniciado por ZiTAL Ver Mensaje
Código PHP:
$result mysql_query("SELECT pass FROM admin WHERE login='$nickN'"); 
deberia ser:
Código PHP:
$result mysql_query("SELECT pass FROM admin WHERE login='$nickN'",$link); 
haber esta vez.
Estoy de acuerdo con el cambio, aunque no es necesario si sólo abre una conexión pero así se tiene ordenadito x si debe conectarse a varias BBDDs diferentes.

Cita:
Iniciado por Javiglez
yo tengo una clase para crear la base de datos y el administrador por defecto en php
¿Qué quieres decir con lo de "el administrador por defecto en php"? ¿Que un usuario del grupo de Administradores es el q ejecuta el código para crear las bases de datos?

En ese caso lo q okurre es q en tu hosting no tendrás permisos para ejecutar las sentencias a menos q lo hagas desde phpmyadmin...

En caso contrario tal vez debas revisar los parámetros de conexión q usa tu clase a ver si hay algo q no coincida con los q usaste para crear tu BBDD en el servidor ajeno.

Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
  #12 (permalink)  
Antiguo 05/09/2006, 04:38
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 1 mes
Puntos: 0
esq a ver vamos a ir por partes y vamos a veer si me explico, yo quiero q me funcione como yo lo tengo no creando en plan chapucero con el PHPmyadmin las tablas, entonces os enseño la clase donde creo la base de datos que es un PHP con chivatos y que ahi de las 4 tablas solo me crea 2 y no me crea el registro por defecto en la tabla administradores...ya empezamos mal porque funcionaba perfecto en localhost...Aqui os pongo el codigo
Código PHP:
define("RUTA","UPLOAD/");
$basedatos = "nogues";
$servidor= "localhost";
$usuario= "root";
$pasword= "";
$ruta= "Upload/";

//conexion  con el servidor
$link = @mysql_connect($servidor, $usuario, $pasword);
 
// comprobacion de conexion
if (! $link){
?>
echo "<h2 align='center'>ERROR: Imposible establecer conexión con el servidor</h2>";
<?php
exit;
}
// lista bases de datos 
$db mysql_list_dbs();
$num_bd mysql_num_rows($db);
//base de datos existente 
$existe "NO" ;
for (
$i=0$i<$num_bd$i++) {
if (
mysql_dbname($db$i) == $basedatos) {
$existe "SI" ;
mysql_drop_db($basedatos$link);
 

?>
<h2 class="Estilo2">LA BASE DE DATOS <?php echo" $basedatos" ?> ha sido eliminada.</h2>
<?php
$existe 
"NO" ;
}
}
if (
$existe == "NO") {
 
if (! 
mysql_create_db($basedatos$link)) {
?>
<h2 class="Estilo2">ERROR 1: Imposible crear base de datos</h2>
<?php
exit;

else {
?>
 <h2 class="Estilo2">LA BASE DE DATOS <?php echo" $basedatos" ?> HA SIDO CREADA CORRECTAMENTE.</h2>
<?php
}
}
?>
<br>
<?php
mkdir
(RUTA0777); //Carpeta donde guardo los documentos de los expedientes con los permisos necesarios
$sql "CREATE TABLE Clientes ( 
dni VARCHAR (9) NOT NULL,
nombre VARCHAR (100) NOT NULL,
apellido1 VARCHAR (100) NOT NULL,
apellido2 VARCHAR (100) NOT NULL,
direccion VARCHAR (200) NOT NULL,
telefono INT (9) NOT NULL,
mail VARCHAR (50) NOT NULL,
login VARCHAR (100) NOT NULL,
pass  VARCHAR (100) NOT NULL,
pass2  VARCHAR (100) NOT NULL,
PRIMARY KEY (dni)
) TYPE = INNODB;"


if (@
mysql_db_query($basedatos,$sql,$link)) {
?>
<h2 class="Estilo2">La tabla Clientes se ha creado con éxito</h2>
<?php
} else {
?>
<h2 class="Estilo2">No se ha podido crear la tabla Clientes</h2>
<?php
}

//--------------------------------------------------------------------------------
$sql "CREATE TABLE Expedientes (
expediente INT (20) NOT NULL AUTO_INCREMENT,
nombre VARCHAR (50) NOT NULL,
fecha VARCHAR (20) NOT NULL,
direccion VARCHAR (200) NOT NULL,
dni VARCHAR (9) NOT NULL,
PRIMARY KEY (expediente),
FOREIGN KEY (dni) REFERENCES Clientes(dni) 
) TYPE = INNODB;"
;
      
    
if (@
mysql_db_query($basedatos,$sql,$link)) {
?>
<h2 class="Estilo2">La tabla Expedientes se ha creado con éxito</h2>
<?php
} else {
echo 
"<h2 align='center'>No se ha podido crear la tabla Expediente</h2>";
}

//----------------------------------------------------------------------------------------
$sql "CREATE TABLE Documentos(
id_documento VARCHAR (40) NOT NULL,
tipo VARCHAR (20) NOT NULL,
nombre VARCHAR (50) NOT NULL,
expediente VARCHAR (20) NOT NULL,
comentario VARCHAR (300),
PRIMARY KEY (id_documento),
FOREIGN KEY (expediente) REFERENCES Expedientes(expediente) 
) TYPE = INNODB;"
;
if (@
mysql_db_query($basedatos,$sql,$link)) {
?>
<h2 class="Estilo2">La tabla Documentos se ha creado con éxito</h2>
<?php
} else {
echo 
"<h2 align='center'>No se ha podido crear la tabla Documentos</h2>";
}  
    
//-----------------------------------------------------------------------------------------
        
   
$sql "CREATE TABLE Admin(
login VARCHAR (50) NOT NULL,
pass VARCHAR (50) NOT NULL,
pass2 VARCHAR (50) NOT NULL,
mail VARCHAR (100) NOT NULL,
PRIMARY KEY (login)
) TYPE = INNODB;"
;
if (@
mysql_db_query($basedatos,$sql,$link)) {
?>
<h2 class="Estilo2">La tabla Admin se ha creado con éxito</h2>
<?php
} else {
?>
<h2 class="Estilo2">No se ha podido crear la tabla Admin</h2>
<?php
}
     
 
//administrador por defecto
  
$sql "INSERT INTO admin (login,pass,pass2,mail)
 VALUES ("

$sql .= "'nogues'"
$sql .= ",'nogues'"
$sql .= ",'nogues'";
$sql .= ",'[email protected]'"
$sql .= ")"
mysql_query($sql);  
 

?>
Solo me crea la tabla Clienes y Admin las otras dos no y no introduce adminsitrador nogues que pongo al final de defecto...

Lo unico que se me ocurre es que sea porque las tabla Expedientes y Documentos tienen claves foraneas referenciadas y las otras no pero no me funcionaria en localhost y funciona perfectamente...aver si veis algo hay...Gracias
  #13 (permalink)  
Antiguo 05/09/2006, 04:39
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 1 mes
Puntos: 0
empieza donde el codigo php lo de la conexion con la base ignorarlo que no va ahi, vamos por partes.
  #14 (permalink)  
Antiguo 05/09/2006, 04:52
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 17 años, 9 meses
Puntos: 0
Yo no sé cómo maneja las claves foráneas MySQL pero en SQL Server siempre he usado:

Constraint fk_expediente foreign key (expediente) references Expedientes

y para las claves primarias

id_documento varchar(40) not null primary key,

Pero no sé si irán x ahí los tiros de las claves foráneas...

Y ya q no te inserte el registro en la tabla admin... ni idea de por qué... parece una sintaxis válida y correcta aunque yo lo hubiera puesto así para verlo mejor:

Código PHP:
$sql "INSERT INTO admin (login,pass,pass2,mail) VALUES ('nogues','nogues','nogues','[email protected]')"
Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
  #15 (permalink)  
Antiguo 05/09/2006, 05:22
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 1 mes
Puntos: 0
Pues por eso estoy asi de puteado.....
  #16 (permalink)  
Antiguo 05/09/2006, 05:23
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 1 mes
Puntos: 0
En mysql me funciona bien asi....en localhost pero es subirlo al servidor y solo crea Clientes y Admin y en admin no me mete l registro...
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 13:59.