Foros del Web » Programando para Internet » PHP »

Lio con IF ELSE y else if

Estas en el tema de Lio con IF ELSE y else if en el foro de PHP en Foros del Web. Estoy intentando hacer un formulario para que se pueda cambiar la contraseña del usuario Este es codigo del formulario Código PHP: <? } else if (isset( $_GET [ ...
  #1 (permalink)  
Antiguo 14/10/2004, 18:11
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
Lio con IF ELSE y else if

Estoy intentando hacer un formulario para que se pueda cambiar la contraseña del usuario

Este es codigo del formulario

Código PHP:
<?
} else if (isset($_GET['editardatos'])) {
$sql "SELECT * FROM autores WHERE nombre = '".$_SESSION['usuario']."'";
$resp = @mysql_query($sql);
$rows = @mysql_num_rows($resp);
if (!
$rows)
    echo 
"No existe este usuario<br/>";
else {
?>
<u>Editar Tu cuenta</u><br/><br/>
    <form name="form" method="post" action="procesar.php?editardatos=yes">
    Contraseña Actual:<br/>
    <input type="text" name="passactual" value="" size="35"/> <br/>
    Contraseña Nueva:<br/>
    <input type="text" name="pass" value="" size="35" /><br/>
    Repitela Otra vez:<br/>
    <input type="text" name="pass2" value="" size="35" /><br/>
    
    <input type="submit" name="editardatos" value="Enviar"/>
</form>
<?
}
?>
Y aqui llega a procesar.php

Código PHP:
} else if (isset($_POST['editardatos'])) {
        
$passactual trim($_POST['passactual']);
        
$pass trim($_POST['pass']);
        
$pass2 trim($_POST['pass2']);

        if (
$passactual != "" && $pass != "" && $pass2 != "") {
        
header ("Location: index.php?op=admin&msg=4");
        exit;
        }
        else if (
$pass != $pass2){
        
header ("Location: index.php?op=admin&msg=8");
        exit;
        }
        
$usuarios_consulta mysql_query("SELECT pass FROM autores WHERE usuario='".$_SESSION['usuario']."'") or die(mysql_error());
        
$rows mysql_fetch_array($usuarios_consulta);        
        else if (
md5($passactual) != $row['pass']) {
        
header ("Location: index.php?op=admin&msg=0");
        exit;
        }
        else if (
md5($passactual) == $row['pass']) //linea 175
 
{
        
$pass md5($pass);
        
mysql_query("UPDATE comentarios SET pass = '".$pass."' WHERE nombre = '".$_SESSION['usuario']."'") or die(mysql_error());
        
mysql_close();
        
header ("Location: index.php?op=admin&msg=0");
        exit;
        } else {
            
header("Location: index.php?op=admin&msg=4");
            exit;
        } 
Me sale error en la linea 175 que es la que esta marcada arriba
En que estoy fallando me he liado con esto y la verdad estoy debugeando desde hace rato.
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol

Última edición por Gerald; 15/10/2004 a las 14:09
  #2 (permalink)  
Antiguo 14/10/2004, 19:04
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 14 años, 7 meses
Puntos: 35
loading...........


SI le quitas el comentario
que está afectando hasta la llave {

Ademas porque pones triple === en esa condicion?
Creo que solo son 2 no? == Igualdad


connection closes.
__________________

Maborak Technologies
  #3 (permalink)  
Antiguo 14/10/2004, 19:30
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
ya lo corregi y nada a que se debe :s
Sale esto

Parse error: parse error, unexpected T_ELSE in c:\archivos de programa\easyphp\www\blog\procesar.php on line 175
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #4 (permalink)  
Antiguo 14/10/2004, 19:39
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 14 años, 7 meses
Puntos: 35
loading.............


Descartemos mas cosas

Código PHP:
   header ("Location: index.php?op=admin&msg=0"); 
        exit; 
        } else { 
            
header("Location: index.php?op=admin&msg=4"); 
Te falta cerrarlo


Código PHP:
   header ("Location: index.php?op=admin&msg=0"); 
        exit; 
        } 
//estas cerrando el elseif pero no el primer IF
}else { 
            
header("Location: index.php?op=admin&msg=4"); 

si nò s eso entonces cambiemos todos los elseif por if como tu script termina con el exit; no serà problema

Querìa asì

Código PHP:
    if ($passactual != "" && $pass != "" && $pass2 != "") { 
        
header ("Location: index.php?op=admin&msg=4"); 
        exit; 
        } 
        if (
$pass != $pass2){ 
        
header ("Location: index.php?op=admin&msg=8"); 
        exit; 
        } 
        
$usuarios_consulta mysql_query("SELECT pass FROM autores WHERE usuario='".$_SESSION['usuario']."'") or die(mysql_error()); 
        
$rows mysql_fetch_array($usuarios_consulta);         
        if (
md5($passactual) != $row['pass']) { 
        
header ("Location: index.php?op=admin&msg=0"); 
        exit; 
        } 
        if (
md5($passactual) == $row['pass'])
        { 
        
$pass md5($pass); 
        
mysql_query("UPDATE comentarios SET pass = '".$pass."' WHERE nombre = '".$_SESSION['usuario']."'") or die(mysql_error()); 
        
mysql_close(); 
        
header ("Location: index.php?op=admin&msg=0"); 
        exit;



connection closed.
__________________

Maborak Technologies
  #5 (permalink)  
Antiguo 14/10/2004, 20:10
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
Código PHP:
} else if (isset($_POST['editardatos'])) {
        
$passactual trim($_POST['passactual']);
        
$pass trim($_POST['pass']);
        
$pass2 trim($_POST['pass2']);

        if (
$passactual != "" && $pass != "" && $pass2 != "") {
        
header ("Location: index.php?op=admin&msg=4");
        exit;
        }
        if (
$pass != $pass2){
        
header ("Location: index.php?op=admin&msg=8");
        exit;
        }
        
$usuarios_consulta mysql_query("SELECT pass FROM autores WHERE usuario='".$_SESSION['usuario']."'") or die(mysql_error());
        
$rows mysql_fetch_array($usuarios_consulta);        
        if (
md5($passactual) != $row['pass']) {
        
header ("Location: index.php?op=admin&msg=0");
        exit;
        }
        if (
md5($passactual) == $row['pass']) {
        
$pass md5($pass);
        
mysql_query("UPDATE comentarios SET pass = '".$pass."' WHERE nombre = '".$_SESSION['usuario']."'") or die(mysql_error());
        
mysql_close();
        
header ("Location: index.php?op=admin&msg=0");
        exit;
        } else {
            
header("Location: index.php?op=admin&msg=4");
            exit;
        } 
Ahora lo deje tal como dices y ya no muestra ningun error :S solo me envia a index.php?op=admin

Que esta pasando
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #6 (permalink)  
Antiguo 14/10/2004, 20:17
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 14 años, 7 meses
Puntos: 35
loading......



Todos tus IF solo envian a

index.php?op=admin&msg=8

Pero con mensages diferentes, que nùmero de mensaje te sale?
O donde tendrìa que enviarte? Cual es la estructura de la condiciòn?


connection closed.
__________________

Maborak Technologies
  #7 (permalink)  
Antiguo 14/10/2004, 20:54
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
Saludos

Si te fijas bien en el primer codigo la idea de mi script
es que pueda cambiar la contraseña actual

Para eso pido la contraseña actual
luego la contraseña nueva
confirmar contraseña nueva

luego lo envio a procesar.php

y he ahi donde valido los datos

Creo yo que necesito restructura los if y else pero es ahi cuando me enredo

Tu como lo harias
Estos son los mensajes, deberia llegar al mensaje 0 , que muestra que todo se guardo con exito, con el codigo que puse arriba no muestra nada
Código PHP:
//mensajes
$mensaje[0] = "Guardado con éxito";
$mensaje[1] = "Usuario incorrecto";
$mensaje[2] = "Password incorrecto";
$mensaje[3] = "Debes agregar alguna categoría";
$mensaje[4] = "Algún campo está vacío";
$mensaje[5] = "El artículo no existe";
$mensaje[6] = "Mensaje enviado correctamente";
$mensaje[7] = "Has dejado algún campo vacío";
$mensaje[8] = "Las Contraseñas no Coiciden";
$mensaje[9] = "Tu contraseña actual no coincide"
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #8 (permalink)  
Antiguo 15/10/2004, 13:16
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
Que esta pasando :S, seguire tratando y les dire como me va
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #9 (permalink)  
Antiguo 15/10/2004, 14:08
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
Y asi quedo :D para aquellos que quieran un formulario de cambiar contraseña :D

Código PHP:
} else if (isset($_GET['editardatos'])) {
        
$passactual trim($_POST['passactual']);
        
$pass trim($_POST['pass']);
        
$pass2 trim($_POST['pass2']);
        
$usuarios_consulta mysql_query("SELECT pass FROM autores WHERE nombre     ='".$_SESSION['usuario']."'") or die(mysql_error());
        
$rows mysql_fetch_array($usuarios_consulta);
        
$passbase $rows['pass'];

        if (empty(
$passactual) && empty($pass) && empty($pass)) {
        
header ("Location: index.php?op=admin&msg=4");
        exit;
        }
        else if (empty(
$pass) && empty($pass2)){
        
header ("Location: index.php?op=admin&msg=4");
        exit;
        }
        else if (
$pass != $pass2){
        
header ("Location: index.php?op=admin&msg=8");
        exit;
        }
        else if (
md5($passactual) != $passbase) {
        
header ("Location: index.php?op=admin&msg=9");
        exit;
        }
        else if (
md5($passactual) == $passbase) {
        
$pass md5($pass);
        
mysql_query("UPDATE autores SET pass = '".$pass."' WHERE nombre = '".$_SESSION['usuario']."'") or die(mysql_error());
        
header ("Location: index.php?op=admin&msg=0");
        exit;
        }
                       } else {
            
header("Location: index.php?op=admin&msg=4");
            exit;
        } 
Tambien me sirvio este link

http://mnm.uib.es/~gallir/php/
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol

Última edición por Gerald; 15/10/2004 a las 14:11
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 00:57.