2015-02-26 2 views
1

Это мой Логин страница:Войти Форма продолжает возвращаться

«Это форма, форма действие =»»установлен на нет (? Может быть проблемой)

< формы действия =„“метод = "POST">
имя пользователя: < тип ввода = "текст" имя = "пользователь">
Пароль: < тип ввода = имя "пароль" = "проходят">
< тип ввода = "отправить" значение = "Login" name = "submit" />
</form> "

$query=mysql_query("SELECT * FROM login WHERE username='".$user."' AND password='".$pass."'"); 
$numrows=mysql_num_rows($query); 
if($numrows!=0) 
{ 
while($row=mysql_fetch_assoc($query)) 
{ 
$dbusername=$row['username']; 
$dbpassword=$row['password']; 
} 

if($user == $dbusername && $pass == $dbpassword) 
{ 
session_start(); 
$_SESSION['sess_user']=$user; 

/* Redirect browser */ 
header("Location: member.php"); 
} 
} else { 
echo "Invalid username or password!"; 
} 

вторая страница

<?php 
session_start(); 
if(!isset($_SESSION["sess_user"])){ 
header("location:login.php"); 
} else { 

Всякий раз, когда я нажимаю «войти» кнопку, форма возвращается вместо страницы перенаправлять мне .. помощь пожалуйста,

заранее спасибо

+1

если форма действия не имеет никакого содержания, пост представляется т o текущая страница. – Patrick

+0

У вас возникли какие-либо ошибки? i.e Неверное имя пользователя или пароль? –

+0

Нет, я просто получаю форму обратно. –

ответ

0

Я на самом деле нашел другой путь вокруг:

в основном:

echo "<script> 
top.location='admin.php' 
</script>" 
-1

Я думаю, что заголовок() вызывает много ошибок. Таким образом, вместо того, что я использую это:

<meta http-equiv='refresh' content="0; url=yoururlhere" 

Оставьте как есть, и он будет перенаправлять вас на новую страницу :) Работает так же, как заголовок. Это должно решить ваши проблемы.

EDIT

Ok, вот некоторые обновления, которые помогут сделать его более безопасным, и это должно исправить вашу проблему! :) Сначала давайте начнем с файла подключения к базе данных:

<?php 
$db_username = ""; //Input your database username here 
$db_password = ""; //Input your database password here 
$db_host = ""; //Input your database host here 
$db_name = ""; //Input your database name here 

$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'); 

try { 
    $connection = new PDO("mysql:host={$db_host};dbname={$db_name};charset=utf8", $db_username, $db_password, $options); 
    $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
} 

catch(PDOException $ex) { 
    echo "Can not connect to database."; 
} 

header('Content-Type: text/html; charset=utf-8'); 
?> 

выше будет подключаться к базе данных для Вас! :) Ok следующий позволяет работать с PHP (Пожалуйста, поставьте это в верхней части вашего, перед вашими входами):

<?php 

//Grabs the database connection 
require("path to database connection file"); 

$user = $_POST["user"]; 
$pass = $_POST["pass"]; 

$query="SELECT * FROM login WHERE username=:username AND password=:password"; 

$params->execute(array(':username' => $user, 
         ':password' => $pass)); 

try{ 
    $stmt = $connection->prepare($query); 
    $result = $stmt->execute($params); 
} 

catch(PDOException $ex){ 
    echo ("Failed to run query: " . $ex->getMessage()); 
} 

$fetch = $stmt->fetch(); 

if($fetch) { 
    while($row=mysql_fetch_assoc($query)){ 
     $usernamefetch=$fetch['username']; 
     $passwordfetch=$fetch['password']; 
    } 

    if($user == $usernamefetch && $pass == $passwordfetch) 
     session_start(); 
     $_SESSION['sess_user']=$user; 
?> 
     <meta http-equiv='refresh' content="0; url=page_to_redirect_to" 
<?php 
    { 

    else { 
     echo "Invalid username or password!"; 
    } 
} 
else { 
    echo "Invalid username or password!"; 
} 

?> 

И это код, и он должен работать идеально! :) Единственное, что вам нужно изменить, это тег mets, на который нужно перенаправить. Тогда, конечно, ваш простой HTML:

<form action="" method="POST"> 
    Username: <input type="text" name="user"> 
    Password: <input type="password" name="pass"> 
    <input type="submit" value="Login" name="submit" /> 
</form> 

Пожалуйста, проверьте этот код, я думаю, он будет работать намного лучше! :) Не говоря уже о том, что это будет намного безопаснее.

EDIT

Наконец, я получил эту работу на 100% !!! :) Хорошо теперь используйте:

<?php 
$db_username = "peoplein"; //Input your database username here 
$db_password = "xxxxxxx"; //Input your database password here 
$db_host = "localhost"; //Input your database host here 
$db_name = "xxxxxxxx"; //Input your database name here 

$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'); 

try { 
    $connection = new PDO("mysql:host={$db_host};dbname={$db_name};charset=utf8", $db_username, $db_password, $options); 
    $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
} 

catch(PDOException $ex) { 
    echo "Cannot connect to database."; 
} 

header('Content-Type: text/html; charset=utf-8'); 
?> 

<!doctype html> 
<html> 
<head> 
<title>Login</title> 
</head> 
<body> 

<?php 

    if (isset($_POST["user"])) { 
     $user = $_POST["user"]; 
    } 
    else { 
     $user = ""; 
    } 
    if (isset($_POST["pass"])) { 
     $pass = $_POST["pass"]; 
    } 
    else { 
     $pass = ""; 
    } 

    $query="SELECT * FROM login WHERE username=:username"; 

    $params=(array(':username' => $user)); 

    try{ 
     $stmt = $connection->prepare($query); 
     $result = $stmt->execute($params); 
    } 

    catch(PDOException $ex){ 
     echo ("Failed to run query: " . $ex->getMessage()); 
    } 

    $fetch = $stmt->fetch(); 
    $passwordfetch=$fetch['password']; 

    if (password_verify($pass, $passwordfetch)) { 
      session_start(); 
      $_SESSION['sess_user']=$user; 
?> 
      <meta http-equiv='refresh' content="0; url=http://peopleinvestment.ro/filip/admin.php"> 
<?php 
    } 
    else { 
     echo "Invalid Information"; 
    } 

?> 

<center> 
<h3>Login</h3> 
<form action="" method="POST"> 
    Username: <input type="text" name="user"> 
    Password: <input type="password" name="pass"> 
    <input type="submit" value="Login" name="submit" /> 
</form> 

</body> 
</html> 

НЕ ИЗМЕНИТСЯ НИЧЕГО КРОМЕ пароль_базы_данных и db_name. Теперь следующее, что вы должны изменить. Прежде всего, если кто-то когда-либо попал в вашу базу данных, ваши пароли НЕ безопасны, потому что они не «хэшируются».Теперь вы можете хэширования эти пароли, делая это право перед отправкой их в базу данных:

password_hash($pass, PASSWORD_DEFAULT); 

Так в основном перед пользователь собирается зарегистрировать его автоматически password_hash, а затем ввести его в базу данных. Теперь это ДОЛЖНО быть сделано, иначе код выше НЕ будет работать. Но если вы выберете не пароль_hash (плохая идея), тогда вы можете просто использовать этот код: http://pastebin.com/SJisBwnB. Это должно устранить ваши проблемы, если какие-либо ошибки все еще возникают или у вас есть какие-либо вопросы, пожалуйста, просто сделайте еще один комментарий! :) Это отлично сработало для меня.

+0

если я положил это в html, он просто обновит страницу бесконечным количеством раз –

+0

да, но я не получаю изменения для отправки, он обновляется как раз перед этим. Есть ли способ для этого сделать это, только если пользователь и пропуск проходят? –

+0

не очень, нет –

0

Почему бы не попробовать, как это:

<?php 
session_start(); 
$query = mysql_query("SELECT * FROM login WHERE username='" . $user . "' AND password='" . $pass . "'"); 
$numrows = mysql_num_rows($query); 
if ($numrows > 0) { 
    while ($row = mysql_fetch_assoc($query)) { 
     $dbusername = $row['username']; 
     $dbpassword = $row['password']; 
    } 
     $_SESSION['sess_user'] = $user; 
     header("Location: http://peopleinvestment.ro/filip/member.php"); 
} else { 
    echo "Invalid username or password!"; 
} 

также умнее и короче, потому что вы проверяете 2 раза, если имя пользователя и пароль совпадает

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