Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

serginho_the_best

[RESOLVIDO] pq a session é substituída???

Recommended Posts

olá fiz um script php, e na parte de de users do painel de admin, quando edito um user a minha session é trocada pelo user que editei, olha http://www.urul.cjb.net/test/admin/

login: maximo

senha: 752230

agora vai em Usuários e edita o primeiro user e você vai ver que lá no topo onde ta Olá, nome da session [ Sair ]

oq ta dando?

 

olha as páginas:

 

index.php

<?phpsession_start();include "../config.php";$diverses->verifyLogin();$diverses->verifyAccess();if($_GET["action"] == "logout"){	$users->logoutUser();}?><!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="Content-Type" content="text/html; charset=iso-8859-1" /><title>Painel Administrador</title><style type="text/css" media="screen">@import url(style.css);</style><script type="text/javascript" src="../js/validation.js"></script><script type="text/javascript" src="../js/bbcode.js"></script></head><body><div id="wrapper"><div id="header"><h1><span class="orange">Painel</span> Administrador</h1><h2>Olá, <?=$_SESSION["name"]?> [ <a href="index.php?action=logout">Sair</a> ]</h2></div><div id="navbar"><ul><li><a href="index.php">Home</a></li><li><a href="index.php?action=post">Enviar</a></li><li><a href="index.php?action=users">Usuários</a></li></ul></div><div id="main"><?phpif((!$_GET["action"]) || ($_GET["action"] == "")){	include "admin.home.php";}elseif(file_exists("admin.".$_GET["action"].".php") == 0){	echo "<h1>Erro!</h1>\n";	echo "<div>Página não existente!</div>";}else{	include "admin.".$_GET["action"].".php";}?></div><div id="footer">Copyright © 2007 Painel Administrador. Todos os direitos reservados.<br />Criado por: <a href="http://www.serginhothebest.cjb.net/" target="_blank">Sérgio Rafael</a>. Valid: <a href="http://validator.w3.org/check?uri=referer">XHTML</a>, <a href="http://jigsaw.w3.org/css-validator/check/referer">CSS</a></div></div></body></html>
admin.editUser.php

<?phpinclude_once "../config.php";$diverses->verifyURL("editUser");$id = $diverses->injection($_GET["id"]);extract($_POST);if(isset($submit)){	if($name == "" || $email == ""){		$error = "Você deve digitar um nome/e-mail!";	}	elseif($pass == "" || $pass2 == ""){		$diverses->query("UPDATE users SET name='$name', email='$email', lvl='$lvl' WHERE id='$id'");		$error = "Usuário editado com sucesso!";	}	elseif($pass != $pass2){		$error = "As senhas digitadas não coincidem!";	}	else{		$pass = md5($pass);		$diverses->query("UPDATE users SET name='$name', email='$email', pass='$pass', lvl='$lvl' WHERE id='$id'");		$error = "Usuário editado com sucesso!";	}}$sql = $diverses->query("SELECT * FROM users WHERE id='$id'");$result = mysql_fetch_array($sql);if(mysql_num_rows($sql) == 0){	echo "<h1>Erro!</h1>\n";	echo "<div>Usuário não existente!</div>";}else{	echo "<h1>Editar usuário</h1>\n";	if(isset($error)){		echo "<div>".$error."</div>";	}?><div><span style="font-size:9px">Para não editar a senha, deixe os campos 'Nova senha' e 'Confirmar senha' em branco.</span><form action="index.php?action=editUser&id=<?=$id?>" method="post"><table>	<tr>		<td style="width:140px">Usuário:</td>		<td><strong><?=$result["user"]?></strong></td>	</tr>	</tr>		<td>Nome do usuário:</td>		<td><input type="text" name="name" value="<?=$result["name"]?>" size="20" /></td>	</tr>	</tr>		<td>Endereço de e-mail:</td>		<td><input type="text" name="email" value="<?=$result["email"]?>" size="25" /></td>	</tr>	<tr>		<td>Nova senha:</td>		<td><input type="password" name="pass" size="16" /></td>	</tr>	<tr>		<td>Confirmar senha:</td>		<td><input type="password" name="pass2" size="16" /></td>	</tr>	<tr>		<td>Nível do usuário:</td>		<td><select name="lvl" style="width:108px">			<?php			if($result["lvl"] == 1){				echo "<option value=\"1\" selected=\"selected\">Administrador</option>				<option value=\"2\">Usuário</option>";			}			else{				echo "<option value=\"1\">Administrador</option>				<option value=\"2\" selected=\"selected\">Usuário</option>";			}			?>			</select>		</td>	</tr>	<tr>		<td style="text-align:right" colspan="2"><input type="submit" name="submit" value="Enviar" /></td>	</tr></table></form></div><?php}?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste parte do código, ao menos o que captura a sessão, variaveis etc... senão fica dificil, a principio não observei nada além de tratamento de variaveis via URL.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo codigo acima não encontrei onde a session name é criada..., provavelmente é no sistema de login, veja a variavel que gera a sessão "name" se é igual a utilizada pela edição $name, tente mudar o nome da variavel que gera a sessão name ou a variavel $name do script edição (admin.editUser.php).Lembre-se se você for alterar a variavel no script de edição, modifique o formulário onde houver o campo name para o novo nome.

Compartilhar este post


Link para o post
Compartilhar em outros sites

login.php

<?phpinclude "config.php";if($_SESSION["user"]){	header("Location: admin/index.php");}extract($_POST);if(isset($submit)){	if($user == "" || $pass == ""){		$error = "Você deve digitar um login/senha!";	}	else{		if($users->loginUser($user, $pass)){			header("Location: admin/index.php");		}		else{			$error = "Usuário incorreto ou senha inválida!";		}	}}?>

class.users.php

<?phpclass users{	function loginUser($user, $pass){		$pass = md5($pass);		$sql = mysql_query("SELECT * FROM users WHERE user='$user' AND pass='$pass'");				if(mysql_num_rows($sql) == 0){			return false;		}		else{			$result = mysql_fetch_array($sql);			session_start();			$_SESSION["sid"] = session_id();			$_SESSION["id"] = $result["id"];			$_SESSION["name"] = $result["name"];			$_SESSION["user"] = $user;			$_SESSION["lvl"] = $result["lvl"];			return true;		}	}}?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.