Foros del Web » Programando para Internet » PHP »

manejo del switch

Estas en el tema de manejo del switch en el foro de PHP en Foros del Web. hola amigos tengo problemas con este switch.....si alguien me le puede echar un ojo y ayudarme para ver si tiene algun error se lo agradeceria...MUCHO ...
  #1 (permalink)  
Antiguo 06/01/2003, 11:27
Avatar de fmmeson  
Fecha de Ingreso: enero-2002
Ubicación: Tucuman
Mensajes: 401
Antigüedad: 15 años, 10 meses
Puntos: 2
manejo del switch

hola amigos tengo problemas con este switch.....si alguien me le puede echar un ojo y ayudarme para ver si tiene algun error se lo agradeceria...MUCHO
Código PHP:
<?php

switch ($control){
    case 
1:
        if (
$_POST["usuario"]=="fede" && $_POST["contrasena"]=="fede"){
            
//usuario y contraseña válidos
            //defino una sesion y guardo datos
            
session_start();
            
session_register("autentificado");
            
$autentificado "SI";
            
header ("Location: aplicacion.php");
        }else {}
        break;
    case 
2:
        if (
$_POST["usuario"]=="jose" && $_POST["contrasena"]=="jose"){
            
//usuario y contraseña válidos
            //defino una sesion y guardo datos
            
session_start();
            
session_register("autentificado");
            
$autentificado "SI";
            
header ("Location: aplicacion.php");
        }else {}
        break;
    case 
3:
        if (
$_POST["usuario"]=="seba" && $_POST["contrasena"]=="seba"){
            
//usuario y contraseña válidos
            //defino una sesion y guardo datos
            
session_start();
            
session_register("autentificado");
            
$autentificado "SI";
            
header ("Location: aplicacion.php");
        }else {}
        break;
    default:
        
header("Location: index.php?errorusuario=si");
}
?>
  #2 (permalink)  
Antiguo 06/01/2003, 11:36
Avatar de chalito  
Fecha de Ingreso: diciembre-2002
Ubicación: Santiago, chile
Mensajes: 221
Antigüedad: 15 años
Puntos: 0
asi a simple vista no se ve ningun error del tipo de como esta estructurado, fuera de que los else si no van a llevar nada, mejor no los pongas, no se si lo sabes, pero los else son opcionales, un codigo puede llevar solo if sin else en caso que el else no fuese necesario.

Sin embargo, si nos dijeras que tipo de error te arroja, seria mas simple tratar de identificarlo

Saludos
  #3 (permalink)  
Antiguo 06/01/2003, 12:19
Avatar de joseisrael  
Fecha de Ingreso: noviembre-2002
Ubicación: Maracay, Edo. Aragua
Mensajes: 221
Antigüedad: 15 años
Puntos: 1
Exclamación A ver

Saludos.

El interruptor no debería preguntar igual por :

$_POST['control'] o $_GET['control'] ????????????


Ahora, eso que estas haciendo te quedaria mucho mejor si lo haces con una consulta a una DB.

Y los permisos de acceso se los darías con niveles de usarios. Así te ahorras tener que agregar a ese código todos los uarios que tengas.

Suerte.
__________________
Aprender Siempre. Lema de Vida

José Molina
  #4 (permalink)  
Antiguo 06/01/2003, 12:43
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Siempre un codigo fuera de contexto suele dar malas impresiones .. pero Fuera que eso te funcione o no como tu quieres .. es un poco extrañoo lo que haces .. (pero tu sabras porqué lo haces).

Yo solo veo:
1) .. al hacer un header("location: algo.php"); .. es recomendable terminar con un exit; que cancele la ejecucion del script en ese punto ya que .. se supone q si redireccionas página es para que no siga el proceso de la misma ...

header("location: algo.php");
exit;

2) .. la variable $control no sabemos de donde sale (he de ahi lo q decia del codigo fuera de contexto) .. Si la obtienes de tu codigo OK .. pero si la recibes de otro script (tal vez el mismo que emita los $_POST['user'] .. etc .. seria recomendable que lo recogieses por el método q envies (sea POST o GET o sea una session o lo q toke).

Y .. bueno .. esos bloques "if" q usas los puedes meter en una función .. así evitas código repetivo .. Lo mismo con los "user" / "pass" .. Minimo podrias usar un array para contener esos user/pass con lo cual un simple in_array() sobraría para quitar un 90% de código ademas de hacerlo mas versatil a la hora de quitar o poner usuarios nuevos ...

Un saludo,
  #5 (permalink)  
Antiguo 06/01/2003, 15:47
Avatar de fmmeson  
Fecha de Ingreso: enero-2002
Ubicación: Tucuman
Mensajes: 401
Antigüedad: 15 años, 10 meses
Puntos: 2
hola amigo cluster.....antes que nada quisiera darte las gracias por el derroche de sabiduria y paciencia que nos das a todos......bueno llendo al tema te queria pedir si no es mucha molestia, si puedes ponerme algo del codigo de como quedaria para:
1) poner los IF en una funcion.
2) poner los user y pass en array para trabajar mejor

Desde YA muchas GRACIAS!!!!
  #6 (permalink)  
Antiguo 07/01/2003, 10:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Empieza tu fmmeson con la función y array .. vas poniendo código (previo visita obligada al manual de PHP) y ahí vamos viendo ..

El array puedes emplear algo tipo:
Código PHP:
$usuarios=array("usuario" => "pass","otrousuario" => "pass2");

// Y el acceso al array via clave=>valor:

if ($usuarios[$usuario] == $password){
//es usuario registrado
} else {
// No lo es

Un saludo,
  #7 (permalink)  
Antiguo 07/01/2003, 19:45
Avatar de fmmeson  
Fecha de Ingreso: enero-2002
Ubicación: Tucuman
Mensajes: 401
Antigüedad: 15 años, 10 meses
Puntos: 2
hola amigos hice algunos cambios pero ahorita tengo un problema

-------------------------------INDEX.PHP------------------------------

Código PHP:
<html>
<head>
      <title>Autentificación PHP</title>
</head>
<body>
      <br>
      <br>
      <br>
      <br>
      <br>
      <hr>
      <form action="control.php" method="POST">
      <table align="center" width="225" cellspacing="2" cellpadding="2" border="2" bordercolor="000000">
      <tr>
      <td colspan="2" align="center"
      <?if ($_GET["errorusuario"]=="si"){?>
      bgcolor=red><span style="color:ffffff"><b>Datos incorrectos</b></span>
      <?}else{?>
      bgcolor=#cccccc>Introduce tu clave de acceso
      <?}?></td>
      </tr>
      <tr>
      <td align="right">USUARIO:</td>
      <td><input type="Text" name="usuario" size="8" maxlength="50"></td>
      </tr>
      <tr>
      <td align="right">PASSWORD:</td>
      <td><input type="password" name="contrasena" size="8" maxlength="50"></td>
      </tr>
      <tr>
      <td colspan="2" align="center"><input type="Submit" value="ENTRAR" class="boton" ></td>
      </tr>
      </table>
      <br>
      <hr>
      </form>
</body>
</html>
------------------------------------CONTROL.PHP---------------------------
Código PHP:
<?php
$usuarios 
= array(
     
"usuario1" => "fede",
     
"usuario2" => "jose",
     
"usuario3" => "seba"
);
$passwords = array(
     
"password1" => "fede",
     
"password2" => "jose",
     
"password3" => "seba"
);
function 
registrarusuario(){
            
session_start();
            
session_register("autentificado");
            
$autentificado "SI";
            
header ("Location: aplicacion.php");
            exit;
            }
//vemos si el usuario y contraseña es váildo
switch (){
    case 
1:
        if (
$_POST["usuario"]==$usuarios["usuario1"] && $_POST["contrasena"]==$passwords["password1"]){
            
registrarusuario();
            }
        break;
    case 
2:
        if (
$_POST["usuario"]==$usuarios["usuario2"] && $_POST["contrasena"]==$passwords["password2"]){
           
registrarusuario();
        }
        break;
    case 
3:
        if (
$_POST["usuario"]==$usuarios["usuario3"] && $_POST["contrasena"]==$passwords["password3"]){
          
registrarusuario()
        }
        break;
    default:
        
header("Location: index.php?errorusuario=si");
        exit;
}
?>
el error me lo da en swich (){ --->creo que tengo que poner una variable.....pero de donde la obtengo???
o hay algo mal en el codigo.....cualquier ayuda por minima que sea es importante.....Desde YA MUCHAS GRACIAS
  #8 (permalink)  
Antiguo 07/01/2003, 20:01
Avatar de SpiceMan  
Fecha de Ingreso: noviembre-2002
Mensajes: 160
Antigüedad: 15 años
Puntos: 0
Código PHP:
<?php
$usuarios 
= array( "fede" => "contraseñafede",
  
"jose" => "contraseñajose",
  
"seba" => "contraseñaseba");

function_registrarusuario(){
  
session_start();
  
session_register("autentificado");
  
$autentificado "SI";
  
header ("Location: aplicacion.php");
  exit;
}

//vemos si el usuario y contraseña es váildo

if ($usuarios[$_POST["usuario"]] == $_POST["contrasena"]) {
  
registrarusuario(); 
}
else {
  
header("Location: index.php?errorusuario=si");
  exit;
}

?>

Última edición por SpiceMan; 07/01/2003 a las 20:03
  #9 (permalink)  
Antiguo 08/01/2003, 10:02
Avatar de fmmeson  
Fecha de Ingreso: enero-2002
Ubicación: Tucuman
Mensajes: 401
Antigüedad: 15 años, 10 meses
Puntos: 2
muchas GRACIAS !!!!! SPICEMAN!!!!

el unico error fue que se te escapo el dedo y pusiste un _ (guion bajo) entre function_registrarusuario(){
pero anda perfecto gracias!!!

----------------------------------Post Terminado----------------------------
  #10 (permalink)  
Antiguo 08/01/2003, 12:20
Avatar de SpiceMan  
Fecha de Ingreso: noviembre-2002
Mensajes: 160
Antigüedad: 15 años
Puntos: 0
cluster habia dicho la misma solucion, no lo habia visto, solo que menos detallado... la idea era que lo desarrollaras :D
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 21:58.