Nueva pregunta

Pregunta:

Fecha: 03-11-2016 07:38:45 (En Español)

Syntax error, unexpected end of file en mi código PHP[Resuelta]

Saludos, mi problema es el siguiente, estoy realizando un login con PDO y este fragmento de código me da el error de unexpected end of file.... y no tengo idea el porqué, cualquier ayuda o comentario lo agradeceré.

<?php
include_once("conexion.php");

if (isset($_POST["usuario"])) 
$usuario = $_POST["usuario"];

if (isset($_POST["contraseña"])) 
	$pass = $_POST["contraseña"];

$con;
 $stmt = $con->prepare('SELECT tipo, usuario, contrasena from usuarios where usuario =:usuario AND contrasena =:pass ');
$stmt->execute($con);
while($row =$stmt->fetch() ) {
if ($row['tipo'] == 1) {
  header("Location: principal1.php");
}else {
 if ($row['tipo'] == 2) {
  header("Location: principal2.php");
} 
}
?>


Este es conexion.php:
<?php
try {

  $con = new PDO("mysql:host=localhost;dbname=marketpro", "root", "");
  $con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
  $con->query("SET NAMES 'utf-8'");
  

} catch (Exception $e) {
    echo "No se ha podido conectar con la base de datos";
    exit();
}

return $con;

?>
Etiquetas: Error - MySQL - PHP - PHP PDO - Pregunta Votos: 0 - Respuestas: 5 - Vistas: 9 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 03-11-2016 11:11:48 Amigo, creo que el error es $con, porque ya estas haciendo el include('conexion devuelve un $con'), cuando como si fuera una función

    conexion.php:
    <?php
    // esta es mi aporte archivo conexion.php
    function conexion(){
    try {
      $con = new PDO("mysql:host=localhost;dbname=marketpro", "root", "");
      $con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
      $con->query("SET NAMES 'utf-8'");
      
    } catch (Exception $e) {
        echo "No se ha podido conectar con la base de datos";
        exit();
    }
    return $con;
    }
    ?>


    Archivo que busca la credenciales...

    
    include_once("conexion.php");
    if (isset($_POST["usuario"])) 
    $usuario = $_POST["usuario"];
    if (isset($_POST["contraseña"])) 
        $pass = $_POST["contraseña"];
    
    // este es mi aporte
    
    $con = conexion();
    $consulta = "SELECT tipo, usuario, contrasena from usuarios where usuario $usuario AND contrasena =$pass "
     $stmt = $con->prepare($consulta);
    $stmt->execute($con);
    while($row =$stmt->fetch() ) {
    if ($row['tipo'] == 1) {
      header("Location: principal1.php");
    }else {
     if ($row['tipo'] == 2) {
      header("Location: principal2.php");
    } 
    }
    


    Comentame si te sirvio, Dios te bendiga

    Saludos desde Ecuador
      Votos: 1 - Link respuesta
     
  • Fecha: 03-11-2016 12:02:37 Hola
    En el primer código en la linea 10 esta la variable $con; sin asignación.
    Fue un error de tipo o querías hacer algo en esa línea?
    Saludos
      Votos: 1 - Link respuesta
     
  • Fecha: 04-11-2016 13:05:29 Gracias por el aporte, lo he resuelto a medias, mi situación es: necesito 4 tipos de usuarios pero si ingreso mas de dos me rederige al archivo que se encarga de la validación pero no hace nada:
    <?php
    session_start();


    if (isset($_POST["usuario"]))
    $usuario = $_POST["usuario"];
    if (isset($_POST["contraseña"]))
    $pass = $_POST["contraseña"];
    // este es mi aporte


    if (isset($_POST["usuario"]))
    $usuario = $_POST["usuario"];

    if (isset($_POST["contraseña"]))
    $pass = $_POST["contraseña"];

    $dbh = new PDO('mysql:host=localhost;dbname=marketpro', 'root', '');
    $sth = $dbh->prepare("SELECT * FROM usuarios WHERE usuario = ? AND contrasena = ?");
    $sth->bindParam(1, $usuario);
    $sth->bindParam(2, $pass);
    $sth->execute();

    if ($sth->rowCount() > 0) {

    foreach ($sth as $row ) {

    if($row['tipo'] == 1) {
    header("Location: principal1.php");
    }

    else {
    if($row['tipo'] == 2) {
    header("Location: principal2.php"); }
    }



    }


    }
    ?>
      Votos: 0 - Link respuesta
     
  • Fecha: 04-11-2016 19:03:11 Please , se más espécífico.   Votos: 0 - Link respuesta
     
  • Fecha: 04-11-2016 20:57:35 Gracias a todos por su interes, ya lo resolví, se podría mejorar usando switch en lugar de los if anidados pero así lo tengo, les dejo el código, talves a alguien le puede servir, de nuevo gracias, bendiciones..
    <?php
    session_start();


    if (isset($_POST["usuario"]))
    $usuario = $_POST["usuario"];
    if (isset($_POST["contraseña"]))
    $pass = $_POST["contraseña"];
    // este es mi aporte


    if (isset($_POST["usuario"]))
    $usuario = $_POST["usuario"];

    if (isset($_POST["contraseña"]))
    $pass = $_POST["contraseña"];

    $dbh = new PDO('mysql:host=localhost;dbname=marketpro', 'root', '');
    $sth = $dbh->prepare("SELECT * FROM usuarios WHERE usuario = ? AND contrasena = ?");
    $sth->bindParam(1, $usuario);
    $sth->bindParam(2, $pass);
    $sth->execute();

    if ($sth->rowCount() > 0) {

    foreach ($sth as $row ) {

    if ($row['tipo'] == 1) {
    header("Location: principal1.php");
    } else if ($row['tipo'] == 2) {
    header("Location: principal2.php");
    } else if ($row['tipo'] == 3) {
    header("Location: principal2.php");
    }else if ($row['tipo'] == 4) {
    header("Location: principal4.php");
    }




    }


    } else{
    header("Location: inmobiliaria.html");
    exit();
    }

    ?>
      Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com