2015-05-30 3 views
1

Когда я пытаюсь войти в нее, всегда появляются: «El usuario o contraseña es incorrecto», я не знаю проблемы. Я думаю, что я сделал что-то плохое, когда я читал код.Ошибка в форме входа

Здесь я оставить код:

Acceso.php

<?php 
session_start(); 
$titulo = "Acceso al panel"; 
include 'inc/header.php'; 
if($_SESSION['Logueado'] == TRUE) { 
    header('Location: funciones/panel.php'); 
}else{ 
?> 
<html> 
<center> 
<form method="POST" action="funciones/panel.php"> 
    <div class="form-group"> 
Nombre: <input type="text" name="nombre"></input> 
<hr> 
Contraseña: <input type="password" name="pass"></input> 
<hr> 
<input type="submit" name="enviar" value="Acceso"></input> 
</div> 
</form> 
</center> 
</html> 
<?php 
include 'inc/footer.php'; 
} 
?> 

Следующий шаг: panel.php

<?php 
session_start(); 
include 'inc/header.php'; 
include 'panel_funciones.php'; 

$usuario = $_POST["nombre"]; 
$pass = $_POST["pass"]; 
try { 
    $bd = new PDO("mysql:host=localhost;dbname=b9_16267033_1","b9_16267033","123456"); 
    $bd->query("SET NAMES 'utf8'"); 
} catch (Exception $e){ 
    echo "No se ha podido conectar"; 
    exit; 
} 
try{ 
     $sql= "SELECT usuario, pass FROM usuarios WHERE usuario='$usuario' and pass='$pass'"; 
}catch(Exception $e){ 
    echo "Error en consulta"; 
    exit; 
} 
$iniciosesion=mysql_query($sql); 
$contar = mysql_num_rows($iniciosesion); 

// AQUI COMIENZA COMPROBACIÓN 

if ($contar == 1) { 
    $_SESSION['Logueado'] = TRUE; 
panel(); 
} 
else{ 
    echo "El usuario o contraseña es incorrecto"; 
} 
include 'inc/footer.php'; 
?> 

Функция: panel_funciones.php

<? 
$user = "Javier"; 
function panel(){ 
session_start(); 
echo "<center><h3>Bienvenido al Panel de Control</h1></center></h3></center>"; 
    echo '<form action="logout.php" method="post">'; 
    echo '<input type="submit" value="salir"></form>'; 
    echo '<center> 
<h4>Añadir Imagen</h4><hr> 
<form method="POST" action="accion.php"> 
<div class="form-group"> 
Nombre: <input type="text" name="titulo"></input> 
Link a Imagen: <input type="text" name="link"></input> 
<input type="submit" name="enviar" value="Enviar"></input> 
</div> 
</form> 
<center>'; 
echo ' 
<h4>Eliminar Imagen</h4><hr> 
<form method="POST" action="accion2.php"> 
Escribe link <input type="text" name="imagen"></input> 
<input type="submit" name="enviar2" value="Enviar"></input>'; 
} 
?> 

Спасибо за y наша помощь, я пытаюсь учиться так время от времени, мне нужно задать несколько вопросов.

+0

Сейчас он работает, но он всегда появляется: El Новичок о contraseña эс incorrecto –

+0

вы делаете 'mysql_query ($ SQL)' по запросу PDO '$ sql = $ bd-> query (...)'? Зачем? – Sean

+0

А также - использовать подготовленные заявления. Вы кодируете уязвимость SQL-инъекции. Подумайте, что произойдет, если кто-то будет использовать поле имени пользователя и введите «1» ИЛИ 1 = 1 LIMIT 1 # ». Это сделает ваш запрос всегда верным и позволит войти в систему. –

ответ

1

Отличная работа с использованием PDO.

Но я предполагаю, что вы забыли проверить, какие paremeters принимают mysql_query: U're использует PDOstatement вместо строки.

panel.php

... 
$sql=$bd->query("SELECT usuario, pass 
       FROM usuarios 
       WHERE usuario='$usuario' and pass='$pass') "); 
} 
catch(Exception $e){ 
echo "Error en consulta"; 
exit; 
} 
// Continue to use PDO instead depreciated functions :'(
// Using fetchAll() & count instead 

$iniciosesion=mysql_query($sql); 
$contar = mysql_num_rows($iniciosesion); 

. Move эти 2 последние строки в последний попробовать & заменить их:

$iniciosesion = $bd->query($sql); 
$result = $iniciosesion->fetchAll(); 
$contar = count($result); 

Acceso.php

у пропустил <html> теги в Уре главной странице.

<?php session_start(); ?> 
<html> 
<head></head> 
<body> 
<?php 
... 
//Then close body & html close at the end of your file. 

Источник:

PHP.net : PdoStatement::Fetchall

PHP.net mysql_query

+0

Я изменил его на: $ sql = "SELECT usuario, pass FROM usuarios WHERE usuario = '$ usuario' и pass = '$ pass'"; } catch (Исключение $ e) { \t echo "Error en consulta"; \t выход; } $ iniciosesion = mysql_query ($ sql); $ contar = mysql_num_rows ($ iniciosesion); Но проблема продолжается –

+0

U всегда может редактировать ваше первое сообщение, чтобы предоставить дополнительные данные - мне было бы легче читать для всех. Создание EDIT: в конце вашего вопроса всегда приветствуется. – Falt4rm

+0

Done, thanks :) –

Смежные вопросы