Foros del Web » Programando para Internet » PHP »

Un problema simple pero dificil para mi

Estas en el tema de Un problema simple pero dificil para mi en el foro de PHP en Foros del Web. Estoy probando un sistema de autenticacion. El código es el que expongo a continuación, pero si lo ejecuto con nombre index.php me da un error ...
  #1 (permalink)  
Antiguo 14/06/2006, 13:07
 
Fecha de Ingreso: junio-2006
Ubicación: Córdoba (España)
Mensajes: 9
Antigüedad: 17 años, 10 meses
Puntos: 0
Un problema simple pero dificil para mi

Estoy probando un sistema de autenticacion. El código es el que expongo a continuación, pero si lo ejecuto con nombre index.php me da un error

<html>
<head>
<title>Sistema de Autentificación</title>
<style type="text/css">
<!--
.Estilo1 {
font-family: Verdana;
font-size: 10px;
}
-->
</style>
</head>
<body>
<h1>Sistema de Autentificaci&oacute;n</h1>
<form action="control.php" method="POST">
<table align="center" width="225" cellspacing="2" cellpadding="2" border="0">
<tr>
<td colspan="2" align="center"
<?if ($_GET["errorusuario"]=="si"){?>
<bgcolor=red><span style="color:ffffff"><b>Datos incorrectos</b></span>
<?}else{?>
<bgcolor=#cccccc>Introduce tu clave de acceso
<?}?>
</td>
</tr>
<tr>
<td align="right">USUARIO:</td>
<td><input type="Text" name="usuario" size="20" maxlength="50"></td>
</tr>
<tr>
<td align="right">PASSWORD:</td>
<td><input type="password" name="contrasena" size="20" maxlength="50"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="Submit" value="LOG IN"></td>
</tr>
</table>
</form>
<br>
<br>
<span class="Estilo1">Datos correctos:
<br>
<br>
User: xxxx <br>
Passwd: yyyy </span>
</body>
</html>

Este es el error que me da:


Parse error: syntax error, unexpected '<' in /home/s0188dfe/public_html/accesoseguro/index.php on line 2

Se que es algo muy básico pero la verdad es que estoy ya loco perdido y no doy con ello. si lo ejecuto con la extensión index.htm no hay problema pero me gustaría que fuese desde el lado del servidor su ejección.
¿Me puede alguien echar una mano? Gracias anticipadas.
  #2 (permalink)  
Antiguo 14/06/2006, 13:28
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 1
no se si será por eso pero esto (<?if ($_GET["errorusuario"]=="si"){?>
) ponlo con comillas simples (el get):
<?if ($_GET['errorusuario']=="si"){?>

eso para empezar...

luego creo que aqui sobra el < que te pongo en rojo y negrita

<?if ($_GET["errorusuario"]=="si"){?>
<bgcolor=red><span style="color:ffffff"><b>Datos incorrectos</b></span>

<?}else{?>
<bgcolor=#cccccc>Introduce tu clave de acceso

y por ultimo.. por que no continuas el codigo y metes la tabla (o al menos la parte que esta en la condicion con un echo?:

<?if ($_GET['errorusuario']=="si"){
echo "bgcolor=red><span style='color:ffffff'><b>Datos incorrectos</b></span> ";
}
else
{
echo "bgcolor=red><span style='color:ffffff'><b>Datos incorrectos</b></span>
";
}

?>

creo que nada mas que yo vea.. a ver si con eso te vale
__________________
ALOZORRO v5.0 (ahora en .es)
  #3 (permalink)  
Antiguo 14/06/2006, 23:05
 
Fecha de Ingreso: junio-2006
Ubicación: Córdoba (España)
Mensajes: 9
Antigüedad: 17 años, 10 meses
Puntos: 0
Muchas gracias

Reitero el título, por la rapidez y la precisión en la respuesta lo probé y sin problema. Es curioso como en el error hablaba de comilas dobles y yo no lo veía, es como cuando haces una simple suma y bailas un número. Prometo ser más aplicado y preguntar cuando se agote la investigación.

Un saludo y nuevamente gracias.
Paco
  #4 (permalink)  
Antiguo 15/06/2006, 01:22
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 1
jaja. .de nada hombre.
__________________
ALOZORRO v5.0 (ahora en .es)
  #5 (permalink)  
Antiguo 15/06/2006, 02:59
 
Fecha de Ingreso: junio-2006
Ubicación: Córdoba (España)
Mensajes: 9
Antigüedad: 17 años, 10 meses
Puntos: 0
Estimado amigo Azrael666
Continuo investigando y dandome cuenta de mis carencias, he modificado lo que me dijiste para el acceso de clave y usuario de la siguiente manera, para que cuando la entrada de los datos sea erronea o incompleta dirija a una nueva página que se llama peticionclavecl.htm y en ella se le dan las directrices de donde puede obternerla si forma parte del grupo.

El código es:


<?if ($_GET['errorusuario']<>"si"){
echo "bgcolor=red><span style='color:ffffff'><b>Introduce tu clave de acceso</b></span> ";
}
else
{
header ("Location:peticionclavecl.htm");
}
?>

pero me da un error
Warning: Cannot modify header information - headers already sent by (output started at /home/s0188dfe/public_html/accesoseguro/index.php:4) in /home/s0188dfe/public_html/accesoseguro/index.php on line 25

¿Podrias, abusando de tu amabilidad aclararme esto? Gracias.

Un saludo

Paco
  #6 (permalink)  
Antiguo 15/06/2006, 03:31
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 1
mmm.. yo lo pondría asi:

<?if ($_GET['errorusuario']!="si")
{
echo "bgcolor=red><span style='color:ffffff'><b>Introduce tu clave de acceso</b></span> ";
}
else
{
echo "<script language='Javascript'>window.location='peticioncla vecl.htm'</script>";}
?>


asi poniendo el echo en lugar de header igual ya no te da el error, pero no estoy muy seguro, pruebalo y ya me comentas a ver si te sirvió... sino habrá que buscar por otro lado jeje
__________________
ALOZORRO v5.0 (ahora en .es)
  #7 (permalink)  
Antiguo 15/06/2006, 10:44
 
Fecha de Ingreso: junio-2006
Ubicación: Córdoba (España)
Mensajes: 9
Antigüedad: 17 años, 10 meses
Puntos: 0
No funcionó, visualiza en pantalla window.location='peticionclavecl.htm'


Esto es el sistema que está en .asp y por haber cambiado de servidor a linux tengo que cambiar poco a poco todos los ficheros en asp. El fichero de la autenticación es el que sigue

<%
if request.querystring("errorusuario")<>"si" then
%>
<td colspan="2" align="center" bgcolor=#006600 bordercolor="#006600">
<font color="#C0C0C0">Introduce tu clave de acceso</font></td>
<%
else
response.redirect "PeticionClavecl.htm"
end if
%>

Por lo tanto sería sustituir el código asp por php.

Muchas gracias de todos modos, seguiremos buscando.

Un abrazo

Paco
  #8 (permalink)  
Antiguo 15/06/2006, 11:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
De ASP:

response.redirect "PeticionClavecl.htm"

En PHP se usa la función header() con una cabecera "location":

Código PHP:
header ("Location: pagina.tal");
exit; 
// y se termina la ejecución del script en ese punto 
Tendrás que tener cuidado con no tener nada de "salida" generada antes de esa función, sino tendras problemas. (Problemas que se solucionarían ordenando tu código).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 15/06/2006, 11:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Ops! ..

Cita:
Warning: Cannot modify header information - headers already sent by (output started at /home/s0188dfe/public_html/accesoseguro/index.php:4) in /home/s0188dfe/public_html/accesoseguro/index.php on line 25

ahora vi tu mensaje de error .. Bien .. el mensaje te dice que en "la línea 4 de index" tienes algo de HTML, o un salto de línea despues o antes de un <? o de un ?> ..

Si muestras todo tu código en su contexto (de principio a fin) se verá como trabajas y como deberías "ordenar" tu código para no originar ese envio de cabeceras según el flujo de tu código (y no tener que usar soluciones "parche" como redireccionar en javascript o tener que usar funciones de control del buffer)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 15/06/2006, 11:43
 
Fecha de Ingreso: junio-2006
Ubicación: Córdoba (España)
Mensajes: 9
Antigüedad: 17 años, 10 meses
Puntos: 0
Amigo Cluster

Este es el código completo despues de la introducción del Script en Java.


<html>
<head>
<title>Sistema de Autentificación</title>
<style type="text/css">
<!--
.Estilo1 {
font-family: Verdana;
font-size: 10px;
}
-->
</style>
</head>
<body>
<h1>Sistema de Autentificaci&oacute;n</h1>
<form action="control.php" method="POST">
<table align="center" width="225" cellspacing="2" cellpadding="2" border="0">
<tr>
<td colspan="2" align="center"
<?if ($_GET['errorusuario']!="si")
{
echo "bgcolor=red><span style='color:ffffff'><b>Introduce tu clave de acceso</b></span> ";
}
else
{
echo "<script language='Javascript'>window.location='peticioncla vecl.htm'</script>";}
?>
</td>
</tr>
<tr>
<td align="right">USUARIO:</td>
<td><input type="Text" name="usuario" size="20" maxlength="50"></td>
</tr>
<tr>
<td align="right">PASSWORD:</td>
<td><input type="password" name="contrasena" size="20" maxlength="50"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="Submit" value="LOG IN"></td>
</tr>
</table>
</form>
<br>
<br>
<span class="Estilo1">Datos correctos:
<br>
<br>
User: paco <br>
Passwd: 1747</span>
</body>
</html>


Esto procede como le decía a azrael666 de que el sistema de autenticación estaba en asp y al cambiar a Linux (servidor) tengo que ir pasando poco a poco los ficheros de asp a php.

Muchas gracias por tu interés

Paco
  #11 (permalink)  
Antiguo 15/06/2006, 12:38
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Sube este código al principio de tu script ..
Código PHP:
<?
if ($_GET['errorusuario']=="si")
{
header("Location: peticioncla vecl.htm";
exit;
}
?>
Se trata de que cuando no se cumpla esa condición .. para ese caso redireccionas a otra página .. en ese caso NO corresponde nada más de HTML o seguir ejecutando ese script .. pues realmente lo hace -otro- script o página ...

Más abajo .. justo donde tienes tu actual IF(), puedes usarlo tipo:

Código PHP:
<?
if ($_GET['errorusuario']!="si")
{
echo 
"bgcolor=red><span style='color:ffffff'><b>Introduce tu clave de acceso</b></span> ";
}
?>
Podrías "mover" más el código . usar funciones para definir cabeceras y pies de página .. pero en principio así ya estarías cumpliendo los requisitos de "no enviar salida antes de header() .."

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #12 (permalink)  
Antiguo 15/06/2006, 22:52
 
Fecha de Ingreso: junio-2006
Ubicación: Córdoba (España)
Mensajes: 9
Antigüedad: 17 años, 10 meses
Puntos: 0
Cluster

Sin problema, ahora cuando errorusuario se cumple se marcha a buscar el otro fichero. Creo que el problema era que tiene que estar el header antes de nada. Evidentemente ya es cuestión de refinar el html , etc.

Muchas gracias por todo y como le decía a azrael666, es la diligencia que teneis en el foro para tratar de solucionar lo que para los neófitos es un enorme problema.

Un abrazo

Paco
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 22:12.