Autor Tema: [Problema] Sessiones  (Leído 560 veces)

Desconectado CAEG

  • PHPer@
  • **
  • Mensajes: 80
  • Karma: 5
    • Ver Perfil
[Problema] Sessiones
« en: 07 de Octubre de 2007, 00:32:52 am »
Bueno estava trabajando en un registro de usuarios con sessiones y db
y tengo un problema, Mi problema es que al logearme creo las variables de las sessiones pero cuando me redirecciona a la pagina admin.php(donde administro todo) me sale la pagina acceder(donde niego la entrada a quienes No se han logeado) En Fin no se si me Pudieran Ayudar Y Gracias por todo
Archivos:
Login:
Código: [Seleccionar]
<?     
session_start();
include('conectar.php');
include("funciones.php");
if(isset($_POST['enviar'])){
$nick = clear($_POST[nick]);
$query = "SELECT * FROM `usuarios` WHERE nick='$nick'";
$resp = mysql_query($query);
$rows = mysql_num_rows($resp);
$array = mysql_fetch_array($resp);
$pass = clear($_POST['pass']);
$pass = md5($pass);
if($rows && $array['pass'] = $pass){
$_SESSION['nick'] = $array['nick'];
$_SESSION['puntos'] = $array['puntos'];
header("location: admin.php");
}else{     
echo"El Usuario no Existe o El Password Es Erroneo <a href=\"javascript:history.go(-1)\">Regresar</a>";
}           
}else{
include("index.php");
} ?>   
acceder.php:
Código: [Seleccionar]
<?
session_start();
if($_SESSION){
echo 'Deves Iniciar Sesion';
exit();
}
?>
funciones.php :
Código: [Seleccionar]
<?
  function clear($texto){
$texto = trim($texto); // Eliminamos espacios en blanco o caracteres al principio y final del post
$texto = htmlspecialchars($texto); // funciona casi igual que htmlentities
$texto = str_replace("INSERT","IN-SER-T",$texto);  // Remplazamos palabras que podrian ser usadas para alterar la BD
$texto = str_replace("DELETE","DE-LE-TE",$texto);
$texto = str_replace("TRUNCATE","TRUN-CA-TE",$texto);
$texto = str_replace("SELECT","SE-LEC-T",$texto);
$texto = str_replace("ALTER","AL-TER",$texto);
return $texto;
}
function session_started(){
if(isset($_SESSION)){
return true;
}else{
return false;
}
}
?>
Bueno Espero que me ayuden a terminar mi Script  ;D

Comunidad PHPeros

[Problema] Sessiones
« en: 07 de Octubre de 2007, 00:32:52 am »

Desconectado Lunyx

  • PHPer@
  • **
  • Mensajes: 54
  • Karma: 4
    • Ver Perfil
Re: [Problema] Sessiones
« Respuesta #1 en: 07 de Octubre de 2007, 03:29:59 am »
no soy muy bueno en esto de php pero creo que lo que nesecitas es agregarle cookies

para que cuando hagas login se graven las cookies

y en el admin.php leer las cookies y si estas aparesca el admin.php
y si no estan te aparezca el formulario de login.


Desconectado CarlosRdrz

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 2.505
  • Karma: 131
  • Sexo: Masculino
  • A.k.a. TLX
    • Ver Perfil
Re: [Problema] Sessiones
« Respuesta #2 en: 07 de Octubre de 2007, 09:58:54 am »
Lo primero, es que todo esto:
if($_SESSION){
Esta en realidad mal definido, en seguridad, y en tu codigo. Estamos hablando del archivo acceder.php
if($_SESSION){
echo &
#39;Deves Iniciar Sesion&#39;;
exit();
}

Le estas diciendo que si existe una sesion cualquiera, muestre el mensaje "Deves iniciar sesion". Por lo tanto, seria al contrario, haciendo uso del signo de exclamacion

if(!$_SESSION){

Pero de todas formas, este if tiene un problema, y es que, si en otra parte cualquiera de la web, se crea una session, inmediatamente se podra acceder a estos archivos, asi que te recomiendo que uses esto.
if($_SESSION[&#39;nick&#39;]){
Asi solo funcionara si esta creada la sesion "nick".



Otro punto.
En el archivo de login, miremos esta linea
if($rows && $array[&#39;pass&#39;] = $pass){
Una definicion de eso seria:
Si $rows es TRUE y $array['pass'] es igual a la variable $pass...
Por lo tanto, esta mal definido, ya que $rows contiene el numero de resultados, vamos a poner una comprobacion para ver si ese valor no es distinto de 0.
Ademas, en ese if tienes otro error, y es que solo usas 1 signo de igualdad (=). En las condicionales, un signo de igualdad no significa nada. Debes poner 2 signos de igualdad. (Tambien hay la posibilidad de que se pongan 3 signos, pero eso es otra historia)
Quedaria asi.
if($rows != && $array[&#39;pass&#39;] == $pass) {

Por lo demas, creo que esta todo bien, mirandolo así por encima...
Mucha suerte con tu proyecto, y si necesitas algo, aqui estoy
Saludos
La dedicación de mi respuesta sera directamente proporcional a la dedicación de tu pregunta.
Hacer códigos que entiendan las máquinas es fácil, lo difícil y realmente útil es hacer códigos que entiendan las personas.
http://twitter.com/CarlosRdrz
http://www.carlosrdrz.es

Desconectado CAEG

  • PHPer@
  • **
  • Mensajes: 80
  • Karma: 5
    • Ver Perfil
Re: [Problema] Sessiones
« Respuesta #3 en: 08 de Octubre de 2007, 01:32:31 am »
Gracias TLX solo tuve que modificar un poquito el acceder y el login y ya estuvo :D un karma + Cuando Termine publico mi script ;D