Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

फॉर्म जमा करना, mysql और php

यहाँ कुछ चीज़ें गलत हैं।

आप गलत पहचानकर्ता आपके कॉलम के लिए (और उद्धरण होने के नाते):

('id', 'username', 'password', 'email')

उन्हें हटा दें

(id, username, password, email)

या बैकटिक्स का उपयोग करें

(`id`, `username`, `password`, `email`)

mysql_error() आपको एक त्रुटि फेंकनी चाहिए थी, लेकिन इसकी वजह से नहीं:

  • आप MySQL API को mysqli_ . के साथ मिला रहे हैं कनेक्ट करने के लिए, फिर mysql_ आपकी क्वेरी में।

वे दो अलग-अलग एपीआई एक दूसरे के साथ इंटरमिक्स नहीं करते हैं।

mysqli_ का उपयोग करें विशेष रूप से और अपनी वर्तमान क्वेरी को इसमें बदलें:

if($query = mysqli_query($connect, "INSERT...

और बदलें mysql_error() करने के लिए mysqli_error($connect)

उस ब्लॉक के लिए पुनर्लेखन के रूप में:

if(isset($_POST["submit"])){
    if($query = mysqli_query($connect,"INSERT INTO users ('id', 'username', 'password', 'email') VALUES('', '".$username."', '".$password."', '".$email."')")){
        echo "Success";
    }else{
        echo "Failure" . mysqli_error($connect);
    }
}

बस त्रुटि का परीक्षण करने के लिए, जैसा कि मैंने ऊपर उल्लिखित किया है, वैसे ही अपने कॉलम के चारों ओर उद्धरणों को रखते हुए परिवर्तन करें, जैसा कि अभी आपके पास है। फिर आपको वह त्रुटि दिखाई देगी जो MySQL फेंक देगा। फिर आप ऐसा कर सकते हैं जैसा कि मैंने पहले ही ऊपर उल्लिखित किया है और कॉलम नामों के आसपास के उद्धरणों को हटा दें, या उन्हें बैकटिक्स से बदल दें।

आपने जो ट्यूटोरियल देखा, वह शायद बैकटिक्स का बहुत अच्छी तरह से उपयोग किया गया हो, लेकिन शायद इतना अलग नहीं था कि आप यह बता सकें कि वे वास्तव में बैकटिक्स थे और सिंगल कोट्स नहीं थे।

हालांकि, आपका वर्तमान कोड SQL इंजेक्शन के लिए खुला है। . mysqli का उपयोग करें तैयार बयानों के साथ , या तैयार बयानों के साथ PDO , वे अधिक सुरक्षित हैं

मैंने देखा है कि आप सादे पाठ में पासवर्ड संग्रहीत कर रहे होंगे। अगर ऐसा है, तो यह बेहद हतोत्साहित करने वाला है।

मेरा सुझाव है कि आप CRYPT_BLOWFISH का उपयोग करें या PHP 5.5 का password_hash() समारोह। PHP <5.5 के लिए password_hash() compatibility pack का उपयोग करें .

इसके अलावा, करने के बजाय:

$connect = mysqli_connect("localhost", "root", "") or die("Could not connect to server!");
mysqli_select_db($connect, "php_forum") or die("Could not connect to database!");

आपको इसके बजाय त्रुटियों की जांच करनी चाहिए, जैसा कि मैनुअल बताता है

$link = mysqli_connect("myhost","myuser","mypassw","mybd") 
or die("Error " . mysqli_error($link)); 

तो आपके मामले में:

$connect = mysqli_connect("localhost", "root", "","php_forum") 
or die("Error " . mysqli_error($connect)); 

संपादित करें: और मैंने action="register.php" . को बदल दिया करने के लिए action="" चूंकि आप एक ही पेज के अंदर पूरे कोड का उपयोग कर रहे हैं।

<!DOCTYPE HTML>
<html>
    <head>
        <title>Register</title>
    </head>
    <body>
        <form action="" method="POST">
            Username: <input type="text" name="username">
            <br/>
            Password: <input type="password" name="password">
            <br/>
            Confirm Password: <input type="password" name="confirmPassword">
            <br/>
            Email: <input type="text" name="email">
            <br/>
            <input type="submit" name="submit" value="Register"> or <a href="login.php">Log in</a>
        </form>
    </body>
</html>
<?php
    require('connect.php');
    $username = $_POST['username'];
    $password = $_POST['password'];
    $confirmPassword = $_POST['confirmPassword'];
    $email = $_POST['email'];

    if(isset($_POST["submit"])){
        if($query = mysqli_query($connect,"INSERT INTO users (`id`, `username`, `password`, `email`) VALUES ('', '".$username."', '".$password."', '".$email."')")){
            echo "Success";
        }else{
            echo "Failure" . mysqli_error($connect);
        }
    }
?>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक अलग वर्ग में MySQL डेटाबेस विन्यास

  2. mysqldump परीक्षण लॉकिंग टेबल

  3. मैं MySQL में एक विदेशी कुंजी बाधा को अस्थायी रूप से कैसे अक्षम कर सकता हूं?

  4. MySQL उपयोगकर्ता परिभाषित कार्य

  5. MySQL में पासवर्ड कैसे हैश करें?