2017-10-31 14 views
-3

フォームデータをデータベースに送信しようとしているようですが、データベースをチェックしても何も表示されません。誰かが私がどこに間違っているのか教えてくれますか?私はYoutubeのチュートリアルにほとんど手紙に私自身の変数を追加する以外は、あまりにも間違ってどこに行ったかわからない。データベースに送信するフォームデータを取得できません

HTML

<!doctype html> 
<html> 
<head> 
    <title>Registration Page</title> 
    <link rel="stylesheet" href="http://localhost/loginreg/css/styles.css" /> 
</head> 
<body> 
    <div id="wrapper"> 
    <div id="formDiv"> 
    <form method="POST" action="registration/connect.php"> 
    <label>First Name:</label><br> 
    <input type="text" name="fname" /> <br/><br/> 
    <label>Last Name:</label><br> 
    <input type="text" name="lname" /> <br/><br/> 
    <label>Email:</label><br> 
    <input type="text" name="email" /> <br/><br/> 
    <label>Password:</label><br> 
    <input type="password" name="password" /> <br/><br/> 
    <label>Confirm Password:</label><br> 
    <input type="password" name="cpassword" /> <br/><br/> 
    <input type="submit" name="submit" /> 
    </form> 
    </div> 
    </div> 
</body> 
</html> 

PHP

<?php 

    $con = mysqli_connect("127.0.0.1","root",""); 
    if(!$con) 
    { 
     echo 'Not conneced to server'; 
    } 

    if(!mysqli_select_db($con,'registration')) 
    { 
     echo 'Database not selected'; 
    } 

     $firstName = $_POST['fname']; 
     $lastName = $_POST['lname']; 
     $email = $_POST['email']; 
     $password = $_POST['password']; 




    $sql = "INSERT INTO users (firstName,lastName,email,password) VALUES ('$firstName','$lastName','$email','$password')"; 



    header("refresh:2; url=http://localhost/loginreg/index.html"); 
?> 
+5

'$ sql'は単なる変数です。それを送るには 'mysqli'関数を使う必要があります。それもSQLインジェクションにつながります。それをパラメータ化する必要があります。また、プレーンテキストパスワードは保存しないでください。 http://php.net/manual/en/function.password-hash.phpまた、私はYouTubeのチュートリアルを使用しないことをお勧めします(これは、それがあなたに多くのベストプラクティスが欠けているよりもそれを与えたものである場合) – chris85

+0

あなたの最後の試みのようにこの質問には実際に値をデータベースに挿入するコードはありません。今回は少なくともSQLステートメントがありますが、そのステートメントを実際に実行してデータベースに値を挿入するコードはまだありません。 – jmoerdyk

+0

**警告**:独自のアクセス制御レイヤーを作成するのは簡単ではなく、間違った操作をする機会がたくさんあります。 [Laravel](http://laravel.com/)のような最新の[開発フレームワーク](http://codegeekz.com/best-php-frameworks-for-developers/)がある場合は、独自の認証システムを作成しないでください。強力な[認証システム](https://laravel.com/docs/master/authentication)が組み込まれています。絶対に[推奨されるセキュリティのベストプラクティス](http://www.phptherightway.com/#security)に従ってください。パスワードはプレーンテキスト**として保存しないでください。 – tadman

答えて

-1

あなた$sql variablした後、このような何かを追加します。

if ($conn->query($sql) === TRUE) { echo 'success'; }

Chris85のように、これは完全に安全ではなく、SQLインジェクションまであなたを開きます。

+1

正しい道のりに、これはクエリを武器化するという不運な欠点があります。それは基本的に破壊されたコード上の包帯です。 – tadman

+0

OPは手続き型を使用しています。これはoop用です – nogad

+0

@nogad両方とも連携できます。それは推奨されていませんが、動作します。 –

関連する問題