2017-08-01 23 views
0

ログインフォームを持つhtmlページを作成するために、000webhostにアカウントを作成しました。しかし、私はフォームにデータベースに接続しようとするとエラーに直面しています。ここでmysqlを使用したPHPログインフォーム

はhtmlコードです:

INSERT INTO `mylogin`(`username`, `password`) VALUES ('king','king123') 

私は「couldn:ここ

<html> 

    <head> 
     <title>Login Page</title> 

     <style type = "text/css"> 
     body { 
      font-family:Arial, Helvetica, sans-serif; 
      font-size:14px; 
     } 

     label { 
      font-weight:bold; 
      width:100px; 
      font-size:14px; 
     } 

     .box { 
      border:#666666 solid 1px; 
     } 
     </style> 

    </head> 

    <body bgcolor = "#FFFFFF"> 




     <div align = "center"> 
     <div style = "width:300px; border: solid 1px #333333; " align = "left"> 
      <div style = "background-color:#333333; color:#FFFFFF; padding:3px;"><b>Login</b></div> 

      <div style = "margin:30px"> 

       <form method="POST" action="C1.php"> 
        <label>UserName :</label><input type = "text" name = "username" required = "box"/><br /><br /> 
        <label>Password :</label><input type = "password" name = "password" required = "box" /><br/><br /> 


        <input type = "submit" name="submit" value = " Login "/><br /> 

       </form> 

       <div style = "font-size:11px; color:#cc0000; margin-top:10px"><?php echo $error; ?></div> 

      </div> 

     </div> 

     </div> 
    </body> 
</html> 

は私のPHPページは、MySQLがmyloginという名前のテーブルがあり、値を持つ

 <?php 
session_start(); 
$servername = "localhost"; 
$username = "******"; 
$password = "******"; 

// Create connection 
$database_name = "id2425621_login"; 
$conn = mysqli_connect($servername, $username, $password, $database_name); 

if (isset($_POST['submit'])) 
     {  

    $username='king'; 
    $password='king123'; 

    $query = mysqli_query($conn, "SELECT * FROM mylogin WHERE username='$username' and password='$password'"); 
    if (mysqli_num_rows($query) != 0) 
    { 
    echo "sucess"; 
     } 
     else 
     { 
    echo "fail"; 
    } 
    } 
    ?> 

ですデータベースに接続する、事前に助けていただきありがとうございます

ありがとう

+1

'場合である(mysqli_connect_errno()) { エコーは、 "MySQLへの接続に失敗しました:"。 mysqli_connect_error(); } ' これを使用して、エラーを確認してください。 – Virb

+0

は空白のページを表示します – turki

+0

@turkiエラーログまたはsession_start()の後にページの一番上に表示します。書き込みerror_reporting(E_ALL);エラーを表示するには –

答えて

1

あなたはSQLインジェクションを開いています。したがって、準備されたクエリを使用します。

PHPコードを置き換えます。ここでは

<?php 
session_start(); 
$servername = "localhost"; 
$username = "******"; 
$password = "******"; 

// Create connection 
$database_name = "id2425621_login"; 
if(isset($_POST['submit'])){ 
    $conn = mysqli_connect($servername, $username, $password, $database_name); 
    if (mysqli_connect_errno()) { 
     printf("Connect failed: %s\n", mysqli_connect_error()); 
     exit(); 
    } 
    $username=$_POST['username']; // username value get by form using $_POST 
    $password=$_POST['password']; // password value get by form using $_POST 
    $stmt = mysqli_prepare($conn, "SELECT * FROM mylogin WHERE username=? AND password=?"); 
    mysqli_stmt_bind_param($stmt, 'ss', $username, $password); 
    mysqli_stmt_execute($stmt); 
    if (mysqli_stmt_affected_rows($stmt) > 0){ 
     echo "sucess"; 
    } else { 
     echo "fail"; 
    } 
    mysqli_stmt_close($stmt); 
    mysqli_close($link); 
} 
0

接続を確認してください。何か手がかりがあればエラーログをチェックしてください。

$conn = mysqli_connect($servername, $username, $password, $database_name); 
// Check connection 
if (!$conn) 
{ 
    die("Connection error: " . mysqli_connect_error()); 
} 

希望すると助かります。

100%作業とコードをテストした:For reference

+0

ユーザ名とパスワードを入力しても「成功」というメッセージが表示されます – turki

+0

あなたの問題は「$ username = 'king'」と思います。 $ password = 'king123'; ' データベースからの' $ username'と '$ password'と混同するかもしれないので、別の変数を使ってみてください。 – JunieL

+0

あなたは何を提案しますか、私は本当にこだわっています – turki

0

あなたの改善のコードはここにあります。

<?php 

session_start(); 
$db_host = "localhost"; 
$db_name = "id2425621_login"; 
$db_user = "root"; 
$db_pass = ""; 

if(isset($_POST['submit'])){ 
    $username = $_POST['username']; 
    $password = $_POST['password']; 

    // Create connection 
    $conn = new mysqli($db_host, $db_user, $db_pass, $db_name); 

    //Output any connection error 
    if ($conn->connect_error) { 
     die('Error : ('. $conn->connect_errno .') '. $conn->connect_error); 
    } 

    $stmt = $conn->prepare("SELECT * FROM mylogin WHERE username=? AND password=? LIMIT 1"); 
    $stmt->bind_param('ss', $username, $password); 
    $stmt->execute(); 
    $stmt->store_result(); 
    if($stmt->num_rows == 1) //To check if the row exists 
     { 
      $_SESSION['Logged'] = 1; 
      $_SESSION['username'] = $username; 
      echo 'Success!'; 
      exit(); 
    } 
    else { 
     echo "Invalid username or password"; 
    } 
    $stmt->close(); 
} 
else 
{ 
    //Nothing 
} 
$conn->close(); 

?> 
+0

私は間違ったデータを入力してもメッセージの成功を得ます – turki

+0

あなたのコードをもう一度更新してください。 –

+0

これは、SQLインジェクション攻撃に対して完全にオープンです。値プレースホルダを持つ準備済みの文を代わりに使用します。 –

0

は、あなたの答えは

<?php 
session_start(); 
$servername = "localhost"; 
$username = "******"; 
$password = "******"; 

// Create connection 
$database_name = "id2425621_login"; 
$conn = mysqli_connect($servername, $username, $password, $database_name); 
if (!$conn) { 
    die(mysqli_error($conn)); 
} 
if (isset($_POST['submit'])) 
{  
    $username='abc'; 
    $password='abc123'; 

    $query = mysqli_query($conn, "SELECT * FROM mylogin WHERE username='$username' and password='$password'"); 
    if(!$query){ 
     echo("Error description: " . mysqli_error($conn)); 
    } else if(mysqli_num_rows($query) > 0){ 
     echo "success"; 
    } else { 
     echo "invalid user name or password"; 
    } 
} 
?> 
関連する問題