2015-06-12 3 views
6

EDIT: теперь она работает, спасибо людям.
Я создал простую систему входа с php, после создания некоторых пользователей в MySQL. Но когда я пытаюсь войти в систему, я ввожу абсолютно пустую страницу, независимо от того, что мой вход. Вот мой HTML ...Простая система входа с php

<body> 
    <div class="mainbox"> 
     <h3 align="center">Log In</h3> 
     <hr> 
     <form role="form" class="form-horizontal" method="POST" action="connectivity.php"> 
     <div class="form-group"> 
      <label for="Username">Username:</label> 
      <input type="text" class="form-control" name="username" size="40" placeholder="Enter Username"> 
     </div> 
     <div class="form-group"> 
      <label for="pwd">Password:</label> 
      <input type="password" class="form-control" name="pass" size="40" placeholder="Enter Password"> 
     </div> 
     <button id="Submit" type="submit" name="submit" class="btn btn-default">Submit</button> 
     </form> 
    </div> 
</body> 

и вот connectivity.php ...

<?php 
define('DB_HOST', 'localhost'); 
define('DB_NAME', 'simplelogin'); 
define('DB_USER','root'); 
define('DB_PASSWORD',''); 

$con=mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die("Failed to connect to MySQL: " . mysql_error()); 
$db=mysql_select_db(DB_NAME,$con) or die("Failed to connect to MySQL: " . mysql_error()); 

function SignIn() 
{ 
    session_start(); 
    if(!empty($_POST['username'])) 
    { 
     $query = mysql_query("SELECT * FROM UserName where userName = '$_POST[username]' AND pass = '$_POST[pass]'") or die(mysql_error()); 
     $row = mysql_fetch_array($query) or die(mysql_error()); 
     if(!empty($row['userName']) AND !empty($row['pass'])) 
     { 
      $_SESSION['userName'] = $row['pass']; 
      echo "Successful login to user profile page!"; 
     } 
     else 
     { 
      echo "Sorry, You have either entered a wrong Username or a wrong password. Please retry"; 
     } 
    } 
}  
if(isset($_POST['submit'])) 
{ 
    SignIn(); 
} 
?> 

Функция не выполняется, что мне делать?

+2

включить регистрацию ошибок и не использовать метод GET для входа. Вместо этого используйте метод POST. Избегайте функций mysql_ *. – Deep

+0

Могу я узнать, почему я должен использовать POST? Я все еще изучаю php ... @DeepKakkar – Anjunadeep

+1

Похоже, вы храните пароли в своей базе данных в виде обычного текста. Вы должны быть заперты в тюрьме за это. ; p По крайней мере, используйте MD5. –

ответ

10

Первый, Вы всегда должны использовать метод POST для входа в систему Лити. POST способ безопасен, а не GET способ. POST не предоставляет информацию по URL-адресу. Для получения дополнительной информации, чтобы получить знания, разница между GET и POST переместится в Link.

Второй, Вы должны избегать mysql_* методов. Для получения информации перейдите на SO LInk.

Третий, Чтобы отправить форму, вы используете тег <button и нет JS для отправки формы на свой клик, поэтому ваша форма не будет отправлена. также не определил его тип как submit как `type =" submit ". Лучше использовать входной тип submit для отправки формы.

Четвертый, Вы получаете данные формы с использованием метода POST и в форме используется метод GET Таким образом, ваш файл действия не в состоянии получить данные из-за метода конфликта Таким образом изменить метод в теге, как method="post".

Fifth, сессия должна быть запущена в верхней части страницы.

Шестой. Лучше всего проверить форму с проверкой на стороне клиента сначала, а затем с проверкой на стороне сервера.

Теперь в вашем коде:

  • изменения <form> атрибут тега в method="post".
  • Использовать <input type="submit" name="submit" value="Submit" />, чтобы отправить форму. файл действия получит данные из формы, используя имя элемента, и вам не хватает в input type="submit" name="submit"
  • Удалите mysql_* с вашего кода и используйте mysqli_* для подключения к базе данных и дальнейшего использования.
+1

Мне нужен был тот первый и второй бит больше всего. Большое спасибо, очень полезные ссылки mate – Anjunadeep

+0

отредактировал ответ с дополнительной информацией. наиболее желанный. всегда готовы помочь другим @Anjunadeep – Deep

4

Ваша форма имеет метод GET, но ваша связь ожидает POST. Измените метод в вашей форме на POST, и это должно быть лучше.

Также у вас нет атрибута имени на кнопке отправки. Если вы разместите форму, она будет искать атрибуты имени, а не идентификаторы. Таким образом, он никогда не войдет в вашу функцию.

+0

О, боже, какая глупая ошибка. Спасибо, теперь он работает – Anjunadeep

3

также необходимо

<input id="Submit" type="submit" name="submit" class="btn btn-default">Submit</button> 
4

Вы должны определить, название кнопки, как «Отправить» .. Попробуйте заменить код кнопки, как следует,

<button id="Submit" name="submit" type="submit" class="btn btn-default">Submit</button> 

Он будет работать как ваш exceptation. . :-)

+0

Это так, спасибо большое :-) – Anjunadeep

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