Foros del Web » Programando para Internet » PHP »

PHP/galleta

Estas en el tema de PHP/galleta en el foro de PHP en Foros del Web. saludos!!! perdon pero no sabia si revivir este post (porque ya habia creado un tema para el mismo objetivo) o crear uno nuevo, bien, llevo ...
  #1 (permalink)  
Antiguo 10/12/2009, 18:07
 
Fecha de Ingreso: agosto-2009
Mensajes: 95
Antigüedad: 15 años, 2 meses
Puntos: 0
PHP/galleta

saludos!!! perdon pero no sabia si revivir este post (porque ya habia creado un tema para el mismo objetivo) o crear uno nuevo, bien, llevo varios dias tratando de solucionar un problema con cookies, lo que necesito es "cachar" los datos del usuario, esto para que no tenga que hacer login cada vez que visite una pag diferente, el codigo que he empleado es el sigueinte :

Formulario html :

Cita:
<form action="validar_usuario.php" method="post">
<label>Usuario (mail):</label>
<input type="text" name="usuario" class="txtBox" />
<label>Password:</label>
<input type="password" name="password" class="txtBox" />
<input type="submit" name="go" value="" class="go" />
<a HREF="javascript:form('formulario.html')">&iexcl;& iexcl;registrate</a>
</form>
archivo validar_usuario.php

Cita:
<?php
//datos para establecer la conexion con la base de mysql.
mysql_connect('localhost','root','')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('usuario')or die ('Error al seleccionar la Base de Datos: '.mysql_error());


function quitar($mensaje)
{
$nopermitidos = array("'",'\\','<','>',"\"");
$mensaje = str_replace($nopermitidos, "", $mensaje);
return $mensaje;
}
if(trim($HTTP_POST_VARS["usuario"]) != "" && trim($HTTP_POST_VARS["password"]) != "")
{

$usuario = $_POST['usuario'];
$password = $_POST["password"];
$result = mysql_query('SELECT mail_v,pass_v FROM visitantes WHERE mail_v=\''.$usuario.'\'');
if($row = mysql_fetch_array($result)){
if($row["pass_v"] == $password){

//creo las galletas----aqui me gustaria que la secion termine cuando el usuario cierre el navegador
setcookie("usuario",$usuario,time()+7776000);
setcookie("pass",$password,time()+7776000);

?>

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


<?
}
else{
echo "<script> alert (\"Password incorrecto.\"); </script>";
print "<meta http-equiv=Refresh content=\"2 ; url=index.php#login\">";
}

//si el usuario no existe en la BD o esta mal escrito su correo electronico
}

else{
echo "<script> alert (\"El usuario no existe en la Base de Datos... porfavor Registrate es .\"); </script>";
print "<meta http-equiv=Refresh content=\"2 ; url=index.php#login\">";
}

mysql_free_result($result);
}else{
echo "<script> alert (\"Debes colocar tu correo electronico como usuario y tu password en los cuadros de texto.\"); </script>";
echo "<script language=Javascript> location.href=\"index.php\"; </script>";
}
mysql_close();
?>

El siguiente archivo PHP es donde verifica si hay datos en la cookie, entra a la BD y compara registros con datos "cachados" que el usuario ha mandado atravez del formulario, de aqui mi problema por que no se si enverdad "cacha" los datos

archivo verificar.php

Cita:
<?php

mysql_connect('localhost','root','')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('usuario')or die ('Error al seleccionar la Base de Datos: '.mysql_error());

//variables para recuperar galleta
$loginCorrecto = false;
$usuario;
$password;

if(isset($HTTP_COOKIE_VARS["usuario"]) && isset($HTTP_COOKIE_VARS["pass"]))
{
$result = mysql_query("SELECT pass_v, mail_v FROM visitantes WHERE pass_v='".$HTTP_COOKIE_VARS["usuario"]."' AND password='".$HTTP_COOKIE_VARS["pass"]."'");

if($row = mysql_fetch_array($result))
{
setcookie("usuario",$HTTP_COOKIE_VARS["usuario"],time()+7776000);
setcookie("pass",$HTTP_COOKIE_VARS["pass"],time()+7776000);
$loginCorrecto = true; //DUDA AQUI--------ESTA VARIABLE PASA AL ARCHIVO acceso_login.php
$password = $row["pass_v"];
$usuario = $row["mail_v"];
}
else
{
//Destruirlas cookies.
setcookie("usuario","x",time()-3600);
setcookie("pass","x",time()-3600);
}
mysql_free_result($result);
}
mysql_close();
?>
Despues, aqui lo que hice es un archivo con el nombre de acceso_login.php el cual es invocado cada vez que el usuario oprima una liga a otra pag, por ejemplo, supongamos que un usuario ya se logio, al dar clic en "examen" en este boton puese una liga a acceso_login.php, lo que hace, es llamar a verificar.php para que le de resultados de la cookie

este es el archivo acceso_login.php

Cita:

<?php
//Coneccion con BD
mysql_connect('localhost','root','')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('usuario')or die ('Error al seleccionar la Base de Datos: '.mysql_error());

//llamada a login.php

include("verificar.php");

//aqui es donde tengo duda----------------
//si exixte la galleta con los datos del usuario, aparece un archivo php diferente,
if(isset($loginCorrecto)
{
print "<meta http-equiv=Refresh content=\"2 ; url=archivo.php\">";
}
else
{
echo "Area restringida, solo usuarios registrados";
}
?>

no marca error ni nada de nada, y no se si "cache" los datos del usuario, he tratado de imprimir la cookie pero la pag sale en blanco cada vez que lo intento, alguien me puede decir que tengo que hacer ? Ayudaaa!!!!!
  #2 (permalink)  
Antiguo 10/12/2009, 19:47
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 15 años
Puntos: 65
Respuesta: PHP/galleta

Mepa que te la estas complicando che... La idea seria:

1) hacer un formulario de login comun y corriente con un action a un script php que verifique los datos en la base
2) si todo esta bien:

session_start();
$_SESSION['user']="nombreDeUsuario"; ---> puede ir cualquier cosa

3) al pcipio de cada pagina pones

Código PHP:
<?php
session_start
();
if(isset(
$_SESSION['user'])){

#le mostras la pagina

}else{

#redireccion a login.php

}
?>
  #3 (permalink)  
Antiguo 11/12/2009, 09:37
 
Fecha de Ingreso: agosto-2009
Mensajes: 95
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: PHP/galleta

Gracias por tu respuesta jackson666 es verdad que me estoy complicando la vida, lo checare como me lo invicas! saludos "CHE" !!
  #4 (permalink)  
Antiguo 11/12/2009, 11:30
 
Fecha de Ingreso: agosto-2009
Mensajes: 95
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: PHP/galleta

Que tal! he echo lo que me dijo jackson666 al inicio de cada pag en las que quiero que entre el usuario registrado. En un formulario pido los datos y en un PHP los proceso y hago consulta la BD, si el usuario existe se crea la secion con $_SESSION['usuario'] = $usuario
aqui todo bien, en las pag restringuidas he puesto:

bloqueada.php

Cita:
<?php
session_start();
if(isset($_SESSION['usuario'])){
?>
despues de eso va el sigueinte codigo:

Cita:
<html>
<head>
<SCRIPT LANGUAGE="JavaScript">
function popUp(URL) {
day = new Date();
id = day.getTime();
eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=0,location=0,statusbar=0,men ubar=0,resizable=0,width=420,height=400');");
}
</script>

//aqui puse una serie de javascript

<body>
aqui tengo unas lienas con div, link, imagenes ,tablas.....etc
</body>

</html>
<?
}else{
echo "debes ser usuario registrado";
}
?>
//al final tengo esto
Funciona todo, el detalle esta en que al momento de accesar bloqueada.php, si no me he logiado me manda este msj de error:

Cita:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\AppServ\www\slectxpo1.php:1) in C:\AppServ\www\slectxpo1.php on line 2
debes ser usuario registrado
digo que si funciona por que imprime echo "debe ser usuario registrado";
he leido, y segun, debo separar el codigo PHP del html simplemente cerrar o abrir segun sea el caso, como salgo de ese error?
  #5 (permalink)  
Antiguo 11/12/2009, 12:52
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 15 años
Puntos: 65
Respuesta: PHP/galleta

1) fijate que tu pagina tenga extension php
2) fijate de estar corriendola desde localhost
3) FUNDAMENTAL: no puede haber NADA entre <?php y session_start(); Deberias tenerlo como te lo puse en el ejemplo de antes
4) No uses <? usa <?php
5) Fijate de tener todos los archivo scon codificacion ANSI

NOTA: si ese es el script que tenes, te olvidaste de cerrar la etiqueta head
  #6 (permalink)  
Antiguo 14/12/2009, 12:04
 
Fecha de Ingreso: agosto-2009
Mensajes: 95
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: PHP/galleta

Nada de nada! nada mas no me sale esto de las secciones, he echo tooodooo lo que me han indicado en este foro, pero nada, no se cual sea el error que de echo el navegador no marca ningun error, pero no hace lo que necesito que haga.....hasta me imagino que los expertos de este foro ya han de estar artos de mi por que siempre con la misma cantaleta! pero bueno, esto me tiene que funcionar y necesito de su ayuda para serlo posible, mmm o.k...nuevamente les comento:

Desde un formulario html :

Cita:
<div id="member"><h2>Login</h2>
<form action="validar_usuario.php" method="post">
<label>Usuario (mail):</label>
<input type="text" name="usuario" class="txtBox" />
<label>Password:</label>
<input type="password" name="password" class="txtBox" />
<input type="submit" name="go" value="" class="go" />
<a HREF="javascript:form('formulario.html')">&iexcl;& iexcl;registrate es Gratis!!</a>
<br class="spacer" />
</form>
</div>
"cacho" los datos del usuario para posteriormente procesarlos en validar_usuario.php

Cita:
<?php
@session_start();
mysql_connect('localhost','root','')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('xpomundo')or die ('Error al seleccionar la Base de Datos: '.mysql_error());
function quitar($mensaje)
{
$nopermitidos = array("'",'\\','<','>',"\"");
$mensaje = str_replace($nopermitidos, "", $mensaje);
return $mensaje;
}
if(trim($HTTP_POST_VARS["usuario"]) != "" && trim($HTTP_POST_VARS["password"]) != "")
{
$visita = $_POST['usuario'];
$password = $_POST["password"];
$result = mysql_query('SELECT mail_v,pass_v FROM visitantes WHERE mail_v=\''.$usuario.'\'');
if($row = mysql_fetch_array($result)){
if($row["pass_v"] == $password){
$_SESSION['usuario'] = $visita;
print "<meta http-equiv=Refresh content=\"2 ; url=slectxpo1.php\">";
}
else{
echo "<script> alert (\"Password incorrecto.\"); </script>";
print "<meta http-equiv=Refresh content=\"2 ; url=index.php#login\">";
}
}
else{
echo "<script> alert (\"El usuario no existe en la Base de Datos... porfavor Registrate es .\"); </script>";
print "<meta http-equiv=Refresh content=\"2 ; url=index.php#login\">";
}
mysql_free_result($result);
}else{
echo "<script> alert (\"Es necesario que hagas login; pon tu nombre de usuario (mail) y tu password en los cuadros de texto del formulario de login.\"); </script>";
echo "<script language=Javascript> location.href=\"index.php\"; </script>";
}
mysql_close();
?>
Hasta aqui todo bien, si los datos del usuario son correctos entonces inicio una variable $_SESSION['usuario'] = $visita; en donde guardo el nombre de usuario (mail) para posteriormente redireccionar el explorador a otra pagina, en la pag (x.php) en donde es redireccionado el usuario una vez que inicio seccion y sus datos son correctos he puesto esto al inicio :

x.php
Cita:
<?php
@session_start();
mysql_connect('localhost','root','')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('xpomundo')or die ('Error al seleccionar la Base de Datos: '.mysql_error());
include("verificar.php");
if(isset($loginCorrecto)){
?>
<html>
<head>
</head>
<body>
adsadadadadssssssasdadads
</body>
</html>
<?
}else{
echo "debes ser usuario registrado";
}
?>
Tengo un menu principal en donde un boton es esta ligado a x.php, si el usuario da clic en ese boton sin haber echo login la pag se muestra, he eliminado todo del xplorador (IE,Opera) cookies...etc, y nada! el archivo verificar.php es el que """"verifica"""" si la seccion existe, esto lo hace """verificando""" los usuarios registrados en la BD.

verifica.php
Cita:
<?php
mysql_connect('localhost','root','')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('xpomundo')or die ('Error al seleccionar la Base de Datos: '.mysql_error());
$loginCorrecto = false;
$usuario;
if(isset($HTTP_COOKIE_VARS["usuario"]))
{
$result = mysql_query("SELECT mail_v FROM visitantes WHERE pass_v='".$HTTP_COOKIE_VARS["usuario"]."");
if($row = mysql_fetch_array($result))
{
setcookie("usuario",$HTTP_COOKIE_VARS["usuario"],time()+7776000);
$loginCorrecto = true;
$usuario = $row["mail_v"];
}
else
{
setcookie("usuario","x",time()-3600);
}
mysql_free_result($result);
}
mysql_close();
?>
El unico detalle es que el archivo x.php no me respeta la secion, por que si el usuario ya se logio entra, si no tambien.....QUE HAGO????????

nota: hago referencia de x.php como cualquier archivo y cualquier numeros de archivos que necesiten el mismo codigo para la secion
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:04.