entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

apertura y cierre etiquetas php

Tengo un problema con las aperturas y cierre de etiquetas en un php, tengo un lío de aupa

<?php session_start();

    $dbhost = "localhost";
    $dbuser = "corbachu";
    $dbpass = "xxx";
    $conx = mysql_connect($dbhost, $dbuser, $dbpass);

     mysql_select_db("corbachu_percy", $conx)or die ('Error al seleccionar la Base de Datos: '.mysql_error());;

    if(trim($_POST['email']) != "" && trim($_POST['password']) != "")
    {

    $sql = 'SELECT password, email, username FROM usuarios WHERE email=\''.$email.'\' and password=\''.$password.'\'';
    //$result = mysql_query('SELECT password, email, username FROM usuarios WHERE email=\''.$email.'\' and password=\''.$password.'\'');
    $result = mysql_query($sql);

        if($row = mysql_fetch_array($result)){  

        if($row['password'] == $password){
                $_SESSION['fp_username'] = $row['username'];
                $_SESSION['email'] = $row['email'];

                $_SESSION['fp_username'];
    ?>

                <SCRIPT LANGUAGE="javascript">

                location.href = "zona.php";

                    </SCRIPT>'

            }else{

                location.href = "errorPassword.html";
        <?      
            }
        }else{
    ?>      location.href = "errorPassword.html";
    <?  }
        mysql_free_result($result);
    }else{
        echo 'Debe especificar un usuario y password';
    }

    mysql_close();
    ?>

Cuando la password es incorrecta se me muestra literalmente en pantalla "errorPassword.html"

Muchas gracias

0voto

gonzalss comentado

¿Tendría entonces que poner el cierre del </SCRIPT> digamos que justo antes de cerrar la bbdd . antes de mysql_close() , ?. ¿ Cómo entonces redirigiría al usuario?

Muchas gracias

1 Respuesta

2votos

Leonardo-Tadei Puntos227320

Hola gonzalss,

el error no está en la apertura y cierres de PHP, sino que estás cerrando el tag </SCRIPT> después del location.href = "zona.php"; en vez de cerrarlo cuando termina el código JavaScript.

Todo código JavaScript puesto fuera de <SCRIPT></SCRIPT> no será ejecutado por el navegador...

Cambiando de tema, estás usando una forma muy endeble de validar un usuario, ya que el código JavaScript del que epende la validación está del lado del cliente (y sometido a sus cambios).

Hacé todo esto en PHP y redirigí las paǵinas con header("Location:pagina.php"); que al estar en el servidor, no es modificable por el que navega la página.

Saludos!

0voto

gonzalss comentado

Estoy intentando poner el </SCRIPT> en todos lados y no logro dar con el sitio correcto para que no me de error en caso que el usuario no sea correcto.

0voto

Leonardo-Tadei comentado

En la página en dónde te aparece el código JavaScript, hacé Ctrl+U en el navegador (o la combinación de teclas en que tu navegador muestre el código fuente) y mirá el código generado.

Yo si no veo mal, lo que te falta es, después de location.href = "errorPassword.html"; y de location.href = "errorPassword.html"; poner una llave cerrada para cerrar el else y luego el cierre del script.

Lo que tampoco veo es el IF en JavaScript que justifique el ELSE... es posible que tenags un lío más grande y que algún ELSE creas que es de PHP y esté siendo de JavaScript, ya que la sintaxis es la misma...

Podrías solucionarlo sin IFs ni ELSEs así:

...
    if($row['password'] == $password){
            $_SESSION['fp_username'] = $row['username'];
            $_SESSION['email'] = $row['email'];
            $_SESSION['fp_username'];
?>

<SCRIPT LANGUAGE="javascript">
           location.href = "zona.php";
</SCRIPT>

<?php
        }else{ // de  if($row['password'] == $password){
?>
<SCRIPT LANGUAGE="javascript">
            location.href = "errorPassword.html";
</SCRIPT>

    <?php
        } // cierra  if($row['password'] == $password){
    }else{  // de if($row = mysql_fetch_array($result)){  
?>

<SCRIPT LANGUAGE="javascript">
            location.href = "errorPassword.html";
</SCRIPT>

<?  } // cierra if($row = mysql_fetch_array($result)){  
    mysql_free_result($result);
}else{ // de if(trim($_POST['email']) != "" && trim($_POST['password']) != "")
    echo 'Debe especificar un usuario y password';
} // cierra if(trim($_POST['email']) != "" && trim($_POST['password']) != "")

De esta forma tenés código JS repetido, pero más ordenado.

Saludos!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta