cookies php no funcionan en frame fuera del server
Publicado por Jesus Camacaro (22 intervenciones) el 27/08/2005 22:48:23
Ante todo Gracias por dedicarse a leer este post.
ok. mi situacion es que estoy tratando de armar un web site, y funciona bien viendolo directamente en la direccion real. y cuando intento abrirlo dentro de un frameset, no se puede iniciar sesion. ( esto no pasa con todos los usuarios ) ojo esto no hace que deje de conectarse con la base de datos...
Estuve leyendo los manuales de php que consegui a mano y practicamente se me sugeria utilizar el comando session_start(); en el frameset tambien. el cual es mi problema en este caso. pues que el frameset no esta en el mismo dominio por lo tanto no surte ningun efecto.
a continuacion coloco mi codigo fuente a ver si ustedes pueden ayudarme ya que lo e revisado de arriba hasta abajo y no consigo la falla.
<?php
session_start();
@include("config.php");
function confirmUser($username, $password){
global $conn;
if(!get_magic_quotes_gpc()) {
$username = addslashes($username);
}
$q = "select * from perfiles where username = '$username'";
$result = @mysql_query($q,$conn);
if(!$result || (mysql_numrows($result) < 1)){
return 1;
}
$dbarray = mysql_fetch_array($result);
$dbarray['password'] = stripslashes($dbarray['password']);
$_SESSION['genero'] = stripslashes($dbarray['genero']);
$_SESSION['nickname'] = stripslashes($dbarray['nickname']);
$password = stripslashes($password);
if($password == $dbarray['password']){
return 0;
}
else{
return 2;
}
}
function checkLogin(){
if(isset($_COOKIE['cookname']) && isset($_COOKIE['cookpass'])){
$_SESSION['username'] = $_COOKIE['cookname'];
$_SESSION['password'] = $_COOKIE['cookpass'];
$_SESSION['genero'] = $_COOKIE['cookgenero'];
$_SESSION['nickname'] = $_COOKIE['cooknick'];
}
if(isset($_SESSION['username']) && isset($_SESSION['password'])){
if(confirmUser($_SESSION['username'], $_SESSION['password']) != 0){
unset($_SESSION['username']);
unset($_SESSION['password']);
unset($_SESSION['genero']);
unset($_SESSION['nickname']);
return false;
}
return true;
}
else{
return false;
}
}
function displayLogin(){
global $logged_in;
if($logged_in){
?>
<html>
<?
echo "<div align=\"right\"> <font color=\"#800000\">|<a href=\"/index.php\"> Home</a> |<a href=\"http://theglam.ddtradio.com.ve/perf.php?name=$_SESSION[nickname]\"><b> Bienvenido ".$_SESSION[username]." </a><n> |<a href=\"http://theglam.ddtradio.com.ve/foto/index.php\"> Fotos</a> | <a href=\"/edit.php\">Editar perfil</a> | <a href=\"http://theglam.ddtradio.com.ve/salir.php\">Cerrar sesion</a></font></b> | Libro De Visitas | Acerca De Nosotros | |</n></font></div>";
?>
<?
echo "</BODY>"
."</HTML>";
}
else{
?>
<?
echo "<form action=\"/entrar.php\" method=\"post\" >"
."<input type=\"text\" size=\"2\" class=\"post\" name=\"user\" maxlength=\"30\">"
."Password:"
."<input type=\"password\" size=\"2\" class=\"post\" name=\"pass\" maxlength=\"30\">"
."<input type=\"submit\" size=\"2\" name=\"sublogin\" value=\"login\" class=\"post\">"
."</form>"
?>
<?
echo "</BODY>"
."</HTML>";
}
}
if(isset($_POST['sublogin'])){
if(!$_POST['user'] || !$_POST['pass']){
die("No introduciste un campo");
}
$_POST['user'] = trim($_POST['user']);
if(strlen($_POST['user']) > 30){
die("El username debe ser menor de 30 caracteres");
}
$md5pass = md5($_POST['pass']);
$result = confirmUser($_POST['user'], $md5pass);
if($result == 1){
die("Esta cuenta no existe");
}
else if($result == 2){
die("Password incorrecto");
}
$_POST['user'] = stripslashes($_POST['user']);
$_SESSION['username'] = $_POST['user'];
$_SESSION['password'] = $md5pass;
if(isset($_POST['remember'])){
setcookie("cookname", $_SESSION['username'], time()+60*60*24*100, "/");
setcookie("cookpass", $_SESSION['password'], time()+60*60*24*100, "/");
setcookie("cookgenero", $_SESSION['genero'], time()+60*60*24*100, "/");
setcookie("cooknick", $_SESSION['nickname'], time()+60*60*24*100, "/");
}
//$HTTP_SERVER_VARS[PHP_SELF]
echo "<meta http-equiv=\"Refresh\" content=\"0;url=index.php\">";
return;
}
$logged_in = checkLogin();
?>
Obviamente para ustedes solo incluyo este comando en donde quiero que aparescan los datos:
<? displaylogin (); ?>
pues esto como os dije antes, funciona bien cuando esta fuera de un frame, no a todos los usuarios les pasa igual, algunos pueden entrar al sitio sin problema alguno...
Bueno ante todo muchas gracias por leer el post y si pudieran darme una pista de como solucionar esto no importa cuan pequeña y segura sea ya que no descarto q me falte una pequeñes en el codigo igual se los agradecere...
Jesús Camacaro.
ok. mi situacion es que estoy tratando de armar un web site, y funciona bien viendolo directamente en la direccion real. y cuando intento abrirlo dentro de un frameset, no se puede iniciar sesion. ( esto no pasa con todos los usuarios ) ojo esto no hace que deje de conectarse con la base de datos...
Estuve leyendo los manuales de php que consegui a mano y practicamente se me sugeria utilizar el comando session_start(); en el frameset tambien. el cual es mi problema en este caso. pues que el frameset no esta en el mismo dominio por lo tanto no surte ningun efecto.
a continuacion coloco mi codigo fuente a ver si ustedes pueden ayudarme ya que lo e revisado de arriba hasta abajo y no consigo la falla.
<?php
session_start();
@include("config.php");
function confirmUser($username, $password){
global $conn;
if(!get_magic_quotes_gpc()) {
$username = addslashes($username);
}
$q = "select * from perfiles where username = '$username'";
$result = @mysql_query($q,$conn);
if(!$result || (mysql_numrows($result) < 1)){
return 1;
}
$dbarray = mysql_fetch_array($result);
$dbarray['password'] = stripslashes($dbarray['password']);
$_SESSION['genero'] = stripslashes($dbarray['genero']);
$_SESSION['nickname'] = stripslashes($dbarray['nickname']);
$password = stripslashes($password);
if($password == $dbarray['password']){
return 0;
}
else{
return 2;
}
}
function checkLogin(){
if(isset($_COOKIE['cookname']) && isset($_COOKIE['cookpass'])){
$_SESSION['username'] = $_COOKIE['cookname'];
$_SESSION['password'] = $_COOKIE['cookpass'];
$_SESSION['genero'] = $_COOKIE['cookgenero'];
$_SESSION['nickname'] = $_COOKIE['cooknick'];
}
if(isset($_SESSION['username']) && isset($_SESSION['password'])){
if(confirmUser($_SESSION['username'], $_SESSION['password']) != 0){
unset($_SESSION['username']);
unset($_SESSION['password']);
unset($_SESSION['genero']);
unset($_SESSION['nickname']);
return false;
}
return true;
}
else{
return false;
}
}
function displayLogin(){
global $logged_in;
if($logged_in){
?>
<html>
<?
echo "<div align=\"right\"> <font color=\"#800000\">|<a href=\"/index.php\"> Home</a> |<a href=\"http://theglam.ddtradio.com.ve/perf.php?name=$_SESSION[nickname]\"><b> Bienvenido ".$_SESSION[username]." </a><n> |<a href=\"http://theglam.ddtradio.com.ve/foto/index.php\"> Fotos</a> | <a href=\"/edit.php\">Editar perfil</a> | <a href=\"http://theglam.ddtradio.com.ve/salir.php\">Cerrar sesion</a></font></b> | Libro De Visitas | Acerca De Nosotros | |</n></font></div>";
?>
<?
echo "</BODY>"
."</HTML>";
}
else{
?>
<?
echo "<form action=\"/entrar.php\" method=\"post\" >"
."<input type=\"text\" size=\"2\" class=\"post\" name=\"user\" maxlength=\"30\">"
."Password:"
."<input type=\"password\" size=\"2\" class=\"post\" name=\"pass\" maxlength=\"30\">"
."<input type=\"submit\" size=\"2\" name=\"sublogin\" value=\"login\" class=\"post\">"
."</form>"
?>
<?
echo "</BODY>"
."</HTML>";
}
}
if(isset($_POST['sublogin'])){
if(!$_POST['user'] || !$_POST['pass']){
die("No introduciste un campo");
}
$_POST['user'] = trim($_POST['user']);
if(strlen($_POST['user']) > 30){
die("El username debe ser menor de 30 caracteres");
}
$md5pass = md5($_POST['pass']);
$result = confirmUser($_POST['user'], $md5pass);
if($result == 1){
die("Esta cuenta no existe");
}
else if($result == 2){
die("Password incorrecto");
}
$_POST['user'] = stripslashes($_POST['user']);
$_SESSION['username'] = $_POST['user'];
$_SESSION['password'] = $md5pass;
if(isset($_POST['remember'])){
setcookie("cookname", $_SESSION['username'], time()+60*60*24*100, "/");
setcookie("cookpass", $_SESSION['password'], time()+60*60*24*100, "/");
setcookie("cookgenero", $_SESSION['genero'], time()+60*60*24*100, "/");
setcookie("cooknick", $_SESSION['nickname'], time()+60*60*24*100, "/");
}
//$HTTP_SERVER_VARS[PHP_SELF]
echo "<meta http-equiv=\"Refresh\" content=\"0;url=index.php\">";
return;
}
$logged_in = checkLogin();
?>
Obviamente para ustedes solo incluyo este comando en donde quiero que aparescan los datos:
<? displaylogin (); ?>
pues esto como os dije antes, funciona bien cuando esta fuera de un frame, no a todos los usuarios les pasa igual, algunos pueden entrar al sitio sin problema alguno...
Bueno ante todo muchas gracias por leer el post y si pudieran darme una pista de como solucionar esto no importa cuan pequeña y segura sea ya que no descarto q me falte una pequeñes en el codigo igual se los agradecere...
Jesús Camacaro.
Valora esta pregunta


0