2016-04-01 5 views
0

私はユーザーがユーザー名とパスワードを入力し、送信ボタンをクリックすると、次のHTMLファイルを持っています。ログインするにはフォームへの投稿を

PHPファイルはデータベースに接続し、入力されたユーザーの詳細がcorrentであるかどうかを確認する必要があります。以前にこれをテストしたので、データベース接続があります。ユーザーが送信ボタンをクリックすると、このエラーが表示されます。Cannot POST /http-services/emulator-webserver/ripple/userapp/x/C/xampp/htdocs/xampp/glove_project_php/www/userlogin.php

<?php 
if(isset($_POST["submit"])){ 
    $servername = "localhost"; 
    $username = "root"; 
    $password = ""; 
    $dbname = "dbname"; 

    // Create connection 
    $conn = new mysqli($servername, $username, $password, $dbname); 

    //Check connection 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 


    $newUsername = mysqli_real_escape_string($conn, $_POST['pat_username']); 
    $newPassword = mysqli_real_escape_string($conn, $_POST['pat_password']); 

    $result = $conn->query("SELECT * FROM tablename WHERE patient_username ='$newUsername' AND patient_password='$newPassword'"); 



    if (mysqli_num_rows($result)) { 
     header("Location: mainmenu.html");  
    } 
    else 
    {  
     header("Location: index.html"); 

    } 
    $conn->close(); 
} 
?> 

は、エミュレータ上で動作するように、このPHPファイルを呼び出すの異なる方法はありますか?このコードはlocalhostで完全に動作します。

+1

しかしそのわずか例本などのクエリの使用はsprintfのために[あなたのスクリプトは、SQLインジェクション攻撃のリスクがあります。](http://stackoverflow.com/questions/60174/how-can- i-prevent-sql-injection-in-php)[MySQLi](http://php.net/manual/ja/)の[prepared](http://en.wikipedia.org/wiki/Prepared_statement)のステートメントを学んでください。 mysqli.quickstart.prepared-statements.php)。 –

+0

パスワードのセキュリティを処理するには、PHPの[組み込み関数](http://jayblanchard.net/proper_password_hashing_with_PHP.html)を使用してください。 5.5より小さいPHPバージョンを使用している場合、 'password_hash()' [互換パック](https://github.com/ircmaxell/password_compat)を使用することができます。 –

答えて

0

なぜ$ _POST ["submit"]が$ _POSTのスーパーグローバルに存在するかどうかチェックしていますか?

変更:

if(isset($_POST["submit"])) 

に:私はあなたが送信された変数が設定されている場合は、チェックしなければならないと考えている

if ((isset($_POST["pat_username"]))&&(isset($_POST["pat_password"]))) 

とエラーが解決しない場合は私に知らせてください。

+0

私はフォームが提出されたとき、PHPコードをチェックしたと思った。私はその行を変更しましたが、私はまだ同じエラーを受けています:(私は年齢のためにこれに固執していた – user20051996

+0

@ user20051996私はあなたが次のことをお勧めします: "userlogin2.php"という新しいページを作成し、ACTION = "userlogin" php "をACTION =" userlogin2.php "に、userLogin2.phpにput: <?php echo" username: "。$ _ POST [" pat_username "]。"
";あなたが間違っているものをデバッグし、失敗してしまう可能性のあるページ全体を一度にテストすることが簡単な場合は、userlogin2.phpが失敗した場合、問題の可能性を絞り込み、 – Webeng

+0

どこに '<?php echo "username:"。$ _ POST ["pat_username"]。 "
";?>'? – user20051996

0
Your form, you should working on security and eliminating auto submission, this eliminates auto submission as form contains SESSION_ID() which are unique on web browsing session. 

    <Form Name ="form1" Method ="POST" ACTION = "userlogin.php" id="form1"> 
    <div id="main_body" class="full-width"> 
     <br> 
     <br>      
        <label>Username:</label> 
        <input type = "text" 
          id = "usernameLogin" 
          name="pat_username"> <br> 

       <br> <label>Password:</label> 
        <input type = "password" 
          id = "passwordLogin" 
          name="pat_password"> <br><button value="<?php echo session_id() ?>" type="submit" name="login_check">Login</button> 

    </div> 
    </Form> 

//セキュリティのリスクが非常に高いです。パスワードは暗号化する必要があります。 SALT,ハッシュ/ md5/sha暗号化をご利用ください。そしてまた

##SPRINTF EXAMPLE CODE 
    //$query = sprintf('SELECT * FROM TABLE WHERE username = "%s" AND password = "%s"',mysql_real_escape_string($username),mysql_real_escape_string($password)); 

    #### EXAMPLE END HERE## 

    <?php 
    if(isset($_POST["login_check"]) && $_POST['login_check']==session_id()){ 
    $servername = "localhost"; 
    $username = "root"; 
    $password = ""; 
    $dbname = "dbname"; 

    // Create connection 
    $conn = new mysqli($servername, $username, $password, $dbname); 

    //Check connection 
    if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
    } 


$newUsername = mysqli_real_escape_string($conn, $_POST['pat_username']); 
$newPassword = mysqli_real_escape_string($conn, $_POST['pat_password']); 

$result = $conn->query("SELECT * FROM tablename WHERE patient_username ='$newUsername' AND patient_password='$newPassword'"); 



if (mysqli_num_rows($result)) { 
    header("Location: mainmenu.html");  
} 
else 
{  
    header("Location: index.html"); 

} 
$conn->close(); 
} 
?> 
+0

私はまだ同じ問題を抱えていますが、私はまだあなたの助けをありがとう:POST/HTTPサービス/エミュレータWebサーバー/リップル/ userapp/x/C/xampp/htdocs/xampp/glove_project_php/www/userlogin.php。他のアドバイスはありますか?このエラーは数週間私を悩ませている、私はそれを修正するように見えることができない:( – user20051996

関連する問題