
18/01/2012, 10:48
|
 | | | Fecha de Ingreso: mayo-2011
Mensajes: 24
Antigüedad: 13 años, 9 meses Puntos: 0 | |
Respuesta: Problema de sesion session_name() y session_regenerate_id() Gracias por tu respuesta.
Eso es lo que yo había pensado, que es un problema de configuración del servidor, pero no encuentro a que puede ser debido.
El código es lo que he puesto, no tiene más historia, ya que lo demás es tema de control de acceso, no obstante lo pongo por si sirve de algo, ahí va: Primer archivo acceso:
<?php
session_cache_limiter('nocache,private');
session_name("gce");
session_start();
$_SESSION['us']="lector";
$_SESSION['cl']="661019roctel";
$_SESSION['pr']="C";
$cod_pais = substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2);
if (isset($_GET['idm'])) {
$cod_pais=$_GET["idm"];
}
if ($cod_pais=="es"){
$titulo="ZONA PRIVADA";
$mensaje_contra="Comprobando contraseña.";
$mensaje_user="Comprobando usuario.";
$mensaje_fin="Usuario y contraseña correctos.";
$mensaje_fallo="Acceso denegado, los datos no son correctos, vuelva a intentarlo.";
$mensaje_fallo_pt="En su ordenador o su red hay una sesión abierta de otro usuario. \nCierre la sesión anterior antes de abrir una nueva o vuelva a intentarlo.";
$mensajeconfirmary="ATENCIÓN. Existe una sesión abierta en este ordenador. La sesión anterior se Cerrará.";
$mensajeconfirmarz="ATENCIÓN. Existe una sesión abierta en otro ordenador. La sesión anterior se Cerrará.";
}else{
$titulo="ZONE PRIVÉE";
$mensaje_contra="Vérification de mot de passe.";
$mensaje_user="Vérification de l′utilisateur.";
$mensaje_fin="Signaler un nom d′utilisateur et mot de passe.";
$mensaje_fallo="L′accès est refusé, les détails sont incorrects, s′il vous plaît essayer à nouveau.";
$mensaje_fallo_pt="Dans son ordinateur ou son réseau il y a une session ouverte d'un autre utilisateur. \nIl ferme la session précédente avant d'ouvrir un nouvelle ou s′il vous plaît essayer à nouveau.";
$mensajeconfirmary="ATTENTION. Il existe une session ouverte dans cet ordinateur. La session précédente Sera fermée.";
$mensajeconfirmarz="ATTENTION. Il existe une session ouverte dans un autre ordinateur. La session précédente Sera fermée.";
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="expired" content="01-Mar-10 00:00:01 GMT" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>GROUPE COULEUR ESPAGNOL (PRIVEE)</title>
<script language="JavaScript">
<!--
var idm
idm='<?php echo $cod_pais; ?>';
// -->
</script>
</head>
<body>
<?php
include_once("Scripts/codigo.php");
// 1 - inicio
if (isset($_POST["usuario"])){
echo $mensaje_user."<br />";
$user=trim($_POST["usuario"]);
if (isset($_POST["contra"])){
echo $mensaje_contra."<br />";
$contra=trim($_POST["contra"]);
if($user==""){
echo $mensaje_fallo." - Errno: USR002. <br />";
echo "<meta http-equiv='refresh' content='2;URL=accesoes.php?idm=".$cod_pais."'>";
}elseif(empty($user)){
echo $mensaje_fallo." - Errno: USR003. <br />";
echo "<meta http-equiv='refresh' content='2;URL=accesoes.php?idm=".$cod_pais."'>";
}elseif($contra==""){
echo $mensaje_fallo." - Errno: CTR002. <br />";
echo "<meta http-equiv='refresh' content='2;URL=accesoes.php?idm=".$cod_pais."'>";
}elseif(empty($contra)){
echo $mensaje_fallo." - Errno: CTR003. <br />";
echo "<meta http-equiv='refresh' content='2;URL=accesoes.php?idm=".$cod_pais."'>";
}else{
$con = mysql_connect("localhost:3306",$_SESSION['us'],$_SESSION['cl'])
or die("No se ha podido establecer la conexion con el servidor!");
$resp = mysql_select_db("GCE")
or die("No se ha podido seleccionar la base de datos");
$sqlquery = "SELECT * FROM usuarios WHERE usuario='".$user."'";
$queryresult = mysql_query($sqlquery) or die ("Entre nombre de usuario correcto.");
if(mysql_num_rows($queryresult)>0){
$row=mysql_fetch_array($queryresult);
if(strcmp($row["usuario"],$user)==0 and strcmp($row["contras"],$contra)==0) {
desactivarpasados();
$ipremoto=$_SERVER['REMOTE_ADDR'];
$sqlqueryses = "SELECT * FROM sesiones WHERE ipremoto='".$ipremoto."' AND activo='si' AND usuario!='".$user."'";
$queryresultses = mysql_query($sqlqueryses);
if(mysql_num_rows($queryresultses)<=0){
$rowses=mysql_fetch_array($queryresultses);
// asigno los valores nuevos a las variables
echo session_id()."<br />"; //aquí miro el valor de id en servidor local x - en servidor remoto x
echo session_name()."<br />"; //aquí miro el valor del nombre de sesión en servidor local "gce" - en servidor remoto "gce"
y renombro la sesión
session_name("gcepriv");
$bien=session_regenerate_id();
$_SESSION["usr"]=$user;
$_SESSION["clr"]=$contra;
$_SESSION["prr"]=$row["permiso"];
$_SESSION["nomr"]=$row["nombre"];
$idse=new encripta();
$ids=$idse->encadena(session_id());
echo session_id()."<br />"; //aquí compruebo de nuevo el valor de id en servidor local en este caso cambia - en servidor remoto el mismo x
echo session_name()."<br />"; //aquí compruebo de nuevo el valor del nombre de sesión en servidor local y es "gcepriv" - en servidor remoto "gcepriv"
if ($bien==NULL){
echo "- NULO -";
}elseif($bien==true){
echo "- Verdadero -";
}elseif ($bien==false){
echo "- Falso -";
}else{
echo "Algo pasa";
}
?>
<script language="javascript">
<!--
function redirige(ids,confirmado){
window.location.href="accederesses.php?ids=" + ids + "&idm=" + idm + "&confirm=" + confirmado
}
function confirmar(mensaje,ids){
if(confirm(" " + mensaje + " ")){
window.location.href="accederesses.php?ids=" + ids + "&idm=" + idm + "&confirm=si"
}else{
window.location.href="accesoes.php?idm=" + idm
}
}
-->
</script>
<?php
$permiso=$_SESSION["prr"];
$fecha=getdate();
$fechacero=$fecha[0];
$sqlquery = "SELECT * FROM usuarios WHERE grupo='generico' AND permiso='".$permiso."'";
$queryresult = mysql_query($sqlquery) or die ("Entre nombre de usuario correcto.");
if(mysql_num_rows($queryresult)>0){
$row=mysql_fetch_array($queryresult);
if(strcmp($row["grupo"],"generico")==0 and strcmp($row["permiso"],$permiso)==0) {
$_SESSION["us"]=$row["usuario"];
$_SESSION["cl"]=$row["contras"];
$_SESSION["pr"]=$row["permiso"];
$sqlqueryses = "SELECT * FROM sesiones WHERE activo='si' AND usuario='".$_SESSION['usr']."' AND contras='".$_SESSION['clr']."'";
$queryresultses = mysql_query($sqlqueryses);
$rowses=mysql_fetch_array($queryresultses);
if (mysql_num_rows($queryresultses)>0){
if (($fechacero-$rowses["idcero"])<3600){
if ($rowses["ipremoto"]==$_SERVER['REMOTE_ADDR']){
$_SESSION["idsesion"]=$rowses["idsesion"];
//echo "idsesion: ".$_SESSION["idsesion"]."<br />";
echo "<script name='accion'>confirmar('".$mensajeconfirmary."',' ".$ids."')</script>";
}else if($rowses["ipremoto"]!=$_SERVER['REMOTE_ADDR']){
$_SESSION["idsesion"]=$rowses["idsesion"];
//echo "idsesion: ".$_SESSION["idsesion"]."<br />";
echo "<script name='accion'>confirmar('".$mensajeconfirmarz."',' ".$ids."')</script>";
} //mysql_close();
}else{
$_SESSION["idsesion"]=$rowses["idsesion"];
echo "<script name='accion'>redirige('".$ids."','si')</script>";
}
}else{
$_SESSION["idsesion"]="";
echo "<script name='accion'>redirige('".$ids."','nohf')</script>";
}
}else{
session_unset();
echo $mensaje_fallo." - Errno: PRBD002. <br />";
echo "<meta http-equiv='refresh' content='2;URL=accesoes.php?idm=".$cod_pais."'>";
}
}else{
session_unset();
echo $mensaje_fallo." - Errno: PT001. <br />";
echo "<meta http-equiv='refresh' content='2;URL=accesoes.php?idm=".$cod_pais."'>";
}
}else{
session_unset();
echo $mensaje_fallo_pt." - Errno: PT001. <br />";
echo "<meta http-equiv='refresh' content='4;URL=accesoes.php?idm=".$cod_pais."'>";
}
}else{
session_unset();
echo $mensaje_fallo." - Errno: UCBD001. <br />";
echo "<meta http-equiv='refresh' content='2;URL=accesoes.php?idm=".$cod_pais."'>";
}
}else{
echo $mensaje_fallo." - Errno: USRBD001. <br />";
echo "<meta http-equiv='refresh' content='2;URL=accesoes.php?idm=".$cod_pais."'>";
}
}
-----> |