Foros del Web » Programando para Internet » PHP »

Consulta: condición if.

Estas en el tema de Consulta: condición if. en el foro de PHP en Foros del Web. Buenas, esta consulta va dirigida al sistema de noticias con registracion. Lo q quiero lograr es: si el usuario esta logueado/registrado, q pueda agregar entradas ...
  #1 (permalink)  
Antiguo 09/03/2010, 15:47
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Consulta: condición if.

Buenas, esta consulta va dirigida al sistema de noticias con registracion.
Lo q quiero lograr es: si el usuario esta logueado/registrado, q pueda agregar entradas (postear) y si no lo está, q haya un aviso q diga: para agregar entradas debe loguearse.

Lo q hice por el momento, fue insertar includes_once, en donde sale un aviso de login y registro pero igual sale la parte para agregar entradas.
Lo pueden ver aca: http://fya.webuda.com/prueba/descargas.php

Entonces creo q eso se logra con la condicion if, lo q no se es como armar la condicion, es decir:

Código PHP:
<?php
if (si está logueado) {
echo 
"que se muestre el formulario para agregar entradas";}
else {
echo 
"que muestre la pagina de login";}
?>
...entonces si es verdadero (si está logueado), hago el include al archivos de agregar noticia y si no lo esta, q muestre el include de login.

Gracias.
  #2 (permalink)  
Antiguo 09/03/2010, 15:54
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 8 meses
Puntos: 66
Respuesta: Consulta: condición if.

Con el código que has puesto no es posible ver donde se encuentra el error.

Saludos
__________________
Tu álbum de cromos online!!
  #3 (permalink)  
Antiguo 09/03/2010, 16:08
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Consulta: condición if.

No se puede ver porq es solo un ejemplo de lo q quiero lograr, no tengo una condicion armada porq no se como hacerlo, es decir, no se con q variable de la parte de registracion hacerlo.
  #4 (permalink)  
Antiguo 09/03/2010, 16:20
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 8 meses
Puntos: 66
Respuesta: Consulta: condición if.

Perdona, es el problema de leer rapido.

Tienes el sistema de login??, como es?, usas sesiones?
__________________
Tu álbum de cromos online!!
  #5 (permalink)  
Antiguo 09/03/2010, 16:24
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Consulta: condición if.

Si, y lo tengo en uso.

Código PHP:
<?php
if (LO QUE NO SE ES QUE VARIABLE PONER AQUI) {
echo 
"si es verdadero, aqui pongo el archivo para agregar las noticias con include";}
else {
echo 
"si es falso, pongo el archivo de login con include";}
?>
  #6 (permalink)  
Antiguo 09/03/2010, 16:35
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 9 meses
Puntos: 88
Respuesta: Consulta: condición if.

si usas sessiones puedes preguntar por tu variable de session por ejemplo
Código PHP:
Ver original
  1. if($_SESSION['registrado']){
  2. //estoy registrado
  3. }else{
  4. //no lo estoy
  5. }
saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #7 (permalink)  
Antiguo 09/03/2010, 16:35
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 8 meses
Puntos: 66
Respuesta: Consulta: condición if.

Por eso lo pregunto, si usas sesiones, cuando el usuario se logea correctamente puedes crear una variable de sesion y pasarla como condición.

Código PHP:
<?php

//si el logeo es correcto
$_SESSION['auth']=true;


if (isset(
$_SESSION['auth'])) {
echo 
"si es verdadero, aqui pongo el archivo para agregar las noticias con include";}
else {
echo 
"si es falso, pongo el archivo de login con include";}
?>
__________________
Tu álbum de cromos online!!

Última edición por santris; 09/03/2010 a las 16:44
  #8 (permalink)  
Antiguo 09/03/2010, 16:37
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Consulta: condición if.

Si usa sesiones el sistema.
Pruebo y te comunico si funciono.
Gracias por la respuesta y tu tiempo.
  #9 (permalink)  
Antiguo 09/03/2010, 16:37
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 8 meses
Puntos: 66
Respuesta: Consulta: condición if.

@eits mira la hora de las respuestas. Que sincronía!!

Saludos
__________________
Tu álbum de cromos online!!
  #10 (permalink)  
Antiguo 09/03/2010, 16:44
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 9 meses
Puntos: 88
Respuesta: Consulta: condición if.

jeje que buen tino tenemos hermano (santris) será una buena señal, no creo que eso pase muy seguido jajaja
saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #11 (permalink)  
Antiguo 09/03/2010, 16:58
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Respuesta: Consulta: condición if.

te paso uno que tenia armado... espero ayude

<?php
if(basename($_SERVER['PHP_SELF']) != 'login.php')
{
session_start();
if(!isset($_SESSION['id']))
{
header('Location: login.php');
exit();
}
}
else
{
//admins autorizados:
$admins['admin'] = '1234'; (usuario - admin, pass - 1234)

if(array_key_exists($_POST['nombre'],$admins) && $_POST['pass'] == $admins[$_POST['nombre']])
{
session_start();
$_SESSION['id'] = $_POST['nombre'];

header('Location: index.php');
exit();
}

if($_GET['logout'] == 1)
{
session_start();
unset($_SESSION['id']);//session_destroy();
header('Location: login.php');
exit();
}
?>

si ingresas bien la clave te logea y te lleva al index y si no te devuelve al login
  #12 (permalink)  
Antiguo 09/03/2010, 17:09
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Consulta: condición if.

Jaja, es verdad, q coordinación

No usa sesiones, yo estaba confiado de q si :S

Este es el archivo auth:

Código PHP:
<?php
class auth{
    
// CHANGE THESE VALUES TO REFLECT YOUR SERVER'S SETTINGS
    
var $HOST "****";    // Change this to the proper DB HOST
    
var $USERNAME "*****";    // Change this to the proper DB USERNAME
    
var $PASSWORD "*****";    // Change this to the proper DB USER PASSWORD
    
var $DBNAME "******";    // Change this to the proper DB NAME

    // AUTHENTICATE
    
function authenticate($username$password) {
        
        
// Let's comment this out and use the preg_match method 
        // to restrict username and password characters and disallow
        // the semicolon (;) and apostrophe (') characters
        // Anti-SQL Injection..    
        // if (!get_magic_quotes_gpc()) 
        // {
        //         $username = addslashes($username);
        //        $password = addslashes($password);
        // }
        
        // Check for apostrophe in $username to avoid SQL injection
        
if (ereg("'"$username)) 
        {
            return 
"invalid username";
        }
        
        
// Check for apostrophe in $password to avoid SQL injection
        
if (ereg("'"$password)) 
        {
            return 
"invalid password";
        }
        
        
$query "SELECT * FROM authuser WHERE uname='$username' AND passwd=MD5('$password') AND status <> 'inactive'";

        
$UpdateRecords "UPDATE authuser SET lastlogin = NOW(), logincount = logincount + 1 WHERE uname='$username'";
        
$connection mysql_connect($this->HOST$this->USERNAME$this->PASSWORD);

        
$SelectedDB mysql_select_db($this->DBNAME);
        
$result mysql_query($query); 
        
        
$numrows mysql_num_rows($result);
        
$row mysql_fetch_array($result);
        
        
// CHECK IF THERE ARE RESULTS
        // Logic: If the number of rows of the resulting recordset is 0, that means that no
        // match was found. Meaning, wrong username-password combination.
        
if ($numrows == 0) {
            return 
0;
        }
        
/*
        elseif ($row["level"]==1) {  // ADMIN LOGIN
            $Update = mysql_query($UpdateRecords);
            return 1;
        }
        */
        
else {
            
$Update mysql_query($UpdateRecords);
            return 
$row;
        }
    } 
// End: function authenticate

    // PAGE CHECK
    // This function is the one used for every page that is to be secured. This is not the same one
    // used in the initial login screen
    
function page_check($username$password) {

        
// Let's comment this out and use the preg_match method 
        // to restrict username and password characters and disallow
        // the semicolon (;) and apostrophe (') characters
        // Anti-SQL Injection..    
        // if (!get_magic_quotes_gpc()) 
        // {
        //         $username = addslashes($username);
        //        $password = addslashes($password);
        // }
        
        // Check for apostrophe in $username to avoid SQL injection
        
if (ereg("'"$username)) 
        {
            return 
"invalid username";
        }
        
        
// Check for apostrophe in $password to avoid SQL injection
        
if (ereg("'"$password)) 
        {
            return 
"invalid password";
        }

        
$query "SELECT * FROM authuser WHERE uname='$username' AND passwd=MD5('$password') AND status <> 'inactive'";

        
$connection mysql_connect($this->HOST$this->USERNAME$this->PASSWORD);
        
        
$SelectedDB mysql_select_db($this->DBNAME);
        
$result mysql_query($query); 
        
        
$numrows mysql_num_rows($result);
        
$row mysql_fetch_array($result);

        
// CHECK IF THERE ARE RESULTS
        // Logic: If the number of rows of the resulting recordset is 0, that means that no
        // match was found. Meaning, wrong username-password combination.
        
if ($numrows == 0) {
            return 
false;
        }
        else {
            return 
$row;
        }
    } 
// End: function page_check
?>
Cómo lo utilizaría para la condición?
  #13 (permalink)  
Antiguo 09/03/2010, 17:23
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 9 meses
Puntos: 88
Respuesta: Consulta: condición if.

prueba con algo como esto
Código PHP:
Ver original
  1. session_start();//al principio de la página
  2. //donde deba de ir, y ya sabras como lo manejas
  3. $autorizado= new auth;
  4. $valor=$autorizado->authenticate($_POST['username'], $_POST['password']);
  5. if($valor==0 || $valor=='invalid username' || $valor=='invalid password'){
  6.     //el usuario no existe
  7. }else{
  8.     $_SESSION['registrado']=true; //por ejemplo
  9. }
debo decirte que no me convence como queda pero es la solución que encuentro por ahora para integrar el codigo.

se me olvidaba, esto es para la parte del login, lo que te dije al principio ya debes saber.

saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #14 (permalink)  
Antiguo 09/03/2010, 17:44
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Consulta: condición if.

Gracias eits, lo estoy poniendo en practica, si sale bien aviso pero por el momento no puedo hacerlo funcionar.
  #15 (permalink)  
Antiguo 09/03/2010, 18:49
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Consulta: condición if.

No me funciona.
Hago lo siguiente:
Código PHP:
<?
    
include_once ("reg/auth.php");
    

session_start();//al principio de la página
//donde deba de ir, y ya sabras como lo manejas
$autorizado= new auth;
$valor=$autorizado->authenticate($_POST['username'], $_POST['password']);
if(
$valor==|| $valor=='invalid username' || $valor=='invalid password'){
    
//el usuario no existe
}else{
    
$_SESSION['auth']=true;  
}
?>
y despues:

Código PHP:
<? if(isset($_SESSION['auth'])){
                               include 
'add-noticia.php';
                          }else{
                               echo 
"<b><a href=http://fya.webuda.com/prueba/reg/login.php>Iniciar sesión</a></b>";
                          }
                         
?>
... no me marca ningun error, aprieto el link para loguearme y vuelve a la pagina pero no aparece el "add-noticia.php" para agregar las noticias, me sigue apareciendo el link.
No se q estare haciendo mal.
  #16 (permalink)  
Antiguo 10/03/2010, 10:58
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 8 meses
Puntos: 66
Respuesta: Consulta: condición if.

Session_start al principio de la página como dijo eits

Código PHP:
<?
session_start
();//al principio de la página
    
include_once ("reg/auth.php");
//donde deba de ir, y ya sabras como lo manejas
$autorizado= new auth();
$valor=$autorizado->authenticate($_POST['username'], $_POST['password']);
if(
$valor==|| $valor=='invalid username' || $valor=='invalid password'){
    
//el usuario no existe
}else{
    
$_SESSION['auth']=true;  
}
?>
el include con parentesis

Código PHP:
<? if(isset($_SESSION['auth'])){
                               include (
'add-noticia.php');
                          }else{
                               echo 
"<b><a href=http://fya.webuda.com/prueba/reg/login.php>Iniciar sesión</a></b>";
                          }
                         
?>
__________________
Tu álbum de cromos online!!
  #17 (permalink)  
Antiguo 11/03/2010, 21:22
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Consulta: condición if.

No lo probe aun, en estos dias lo hago y aviso si funciona.
  #18 (permalink)  
Antiguo 11/03/2010, 21:42
Avatar de Miguelithox  
Fecha de Ingreso: diciembre-2008
Ubicación: Viña del Mar
Mensajes: 287
Antigüedad: 15 años, 3 meses
Puntos: 7
Respuesta: Consulta: condición if.

Código:
if(!empty($_SESSION)) {
echo 'Mostrar aquí lo que quieras que aparezca como usuario registrado.';
} elseif(empty($_SESSION)) {
echo 'Mostrar aquí lo que quieras que aparezca como visitante.';
}
  #19 (permalink)  
Antiguo 11/03/2010, 22:32
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Consulta: condición if.

No, no me funciona, no se q estare haciendo mal.
Para q vean lo q pasa, entren aca http://fya.webuda.com/prueba/descargas.php y en menos de un minuto se fijan.
Gracias.

Etiquetas: condición
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 11:16.