Foros del Web » Programando para Internet » PHP »

Error con $_SERVER['DOCUMENT_ROOT']

Estas en el tema de Error con $_SERVER['DOCUMENT_ROOT'] en el foro de PHP en Foros del Web. Estoy usando $url = $_SERVER['DOCUMENT_ROOT']; y en mis scripts lo jalo a travez de un include. prueba.php Código PHP: <? include( "$url/php/conectar.php" ) ; if( $entrar ...
  #1 (permalink)  
Antiguo 24/01/2004, 18:13
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
Error con $_SERVER['DOCUMENT_ROOT']

Estoy usando

$url = $_SERVER['DOCUMENT_ROOT'];

y en mis scripts lo jalo a travez de un include.

prueba.php

Código PHP:
<?
include("$url/php/conectar.php") ;
if(
$entrar) {
function 
quitar($texto) {
$texto trim($texto) ;
$texto htmlspecialchars($texto) ;
return 
$texto ;
}
$nick quitar($nick) ;
$contrasena quitar($contrasena) ;
$resp mysql_query("select contrasena from $tabla_usuarios where nick='$nick'") ;
$datos mysql_fetch_array($resp) ;
if(
mysql_num_rows($resp) != 0) {
if(
$datos[contrasena] == $contrasena) {
$contrasena md5(md5($contrasena)) ;
setcookie("nick",$nick,time()+7776000) ;
setcookie("contrasena",$contrasena,time()+7776000) ;
header("location: $url/php/index.php") ;
}
else {
echo 
"La contraseña es incorrecta. Haz click <a href=javascript:history.back()>aquí</a> para regresar." ;
}
}
else {
echo 
"Este usuario no existe en la base de datos." ;
}
}
else {
echo 
"
<form method=post action=$url/php/entrar.php>
<b>Nick:</b><br>
<input type=text name=nick maxlength=20><br>
<b>Contraseña:</b><br>
<input type=password name=contrasena maxlength=20><br><br>
<input type=submit name=entrar value=Entrar>
</form>
;
echo 
"$url";
}
?>
conectar.php

Código PHP:
<?
$url 
$_SERVER['DOCUMENT_ROOT']; 
$tabla_usuarios "usuarios_prueba" ;
$dbhost "localhost" ;
$dbuser "xxx" ;
$dbpass "xxx" ;
$db "gerald" ;
$conectar mysql_connect($dbhost,$dbuser,$dbpass) ; mysql_select_db($db,$conectar) ;
?>
En que estoy fallando me sale este bendito error, he estado revisando con el buscador del foro sobre rutas absolutas para que tus scripts funcionen en cualquier servidor sea linux o windows y asi no tengas problemas con tus script en cualquier directorio.

Ademas se ve mas limpio el codigo :)

me sale este error

Warning: open_basedir restriction in effect. File is in wrong directory in /home/httpd/vhosts/g2project.com/httpdocs/php/prueba.php on line 2

Warning: Failed opening '/php/conectar.php' for inclusion (include_path='.:/usr/share/pear') in /home/httpd/vhosts/g2project.com/httpdocs/php/prueba.php on line 2

y aqui hay un enlace

http://www.g2project.com/php/prueba.php
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #2 (permalink)  
Antiguo 24/01/2004, 18:45
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

El problema es que estas usando para el include() la variable $url, la cual defines en el fichero que incluyes- Asi que cuando estas en la linea del include(), $url no esta definida y no tiene valor.

saludos.

PD: Por cierto, esto:
Código PHP:
header("location: $url/php/index.php") ; 
esta mal, porque el parametro de Location tiene que ser una URL, no un path.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 24/01/2004, 19:04
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
entonces que me recomiendas para que mis scripts funcione en cualquier directorio, lo que sucede este script lo uso para loguear usuarios y dentro de ellos tengo subdirectorios, y no quiero pegar subir los archivos en acada uno de esos directorios.

Que me recomiendas?
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #4 (permalink)  
Antiguo 25/01/2004, 04:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
La definición de tu $url con el DOCUMENT_ROOT si quieres puedes hacerla en ese conectar.php .. pero las llamadas a ese archivo en otros scripts debes de indicar (por lo menos en ese) la ruta absoluta .. sino pasa lo que te comentó Josemi...

Podrias hacer algo tipo:
Código PHP:
<?
include($_SERVER['DOCUMENT_ROOT']."/php/conectar.php") ;
include (
"$url/php/otro.php");
// etc
o .. sacas fuera a otro include la definición del $url

Código PHP:
<?
include("variables.php");
include(
"$url/php/nose.php");
// etc ...
sólo recuerda que tu "variables.php" o donde definas tu $url debe estar por encima de donde se use a posteriori. Piensa que usar include() supone que vas a "mezclar" el código que llamas en ese punto y que todo junto se ejecutará como un mismo script .. así que si alteras el orden ... para cuando PHP llegue ahí a ejecutar $url .. no estará definida si la defines despues en otro include más abajo.

Por otro lado ten presente lo que te menciona Josemi sobre los redireccionamientos con header() que són cabeceras HTTP para navegadores. Ahí tendras que usar tal vez otra variable como constante que indique algo tipo: http://www.tusitio.tal/

Podrías tener:

variables.php
Código PHP:
<?
$url 
"http://www.tusitio.tal";
$ruta_absoluta $_SERVER['DOCUMENT_ROOT'];
?>
Para llamarlo en tus scripts:

<?
include("variables.php");
include("$ruta_absoluta/php/nose.php");

// etc ...

header ("Location: $url/php/bla.html");
exit;
?>[/PHP]

Y .. si defines constantes para esas variables .. mejor todavía usando define() o incluso las constantes predefinidas de PHP: ___FILE___ y similares ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 (incluyéndote)




La zona horaria es GMT -6. Ahora son las 10:33.