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

कैसे जांचें कि PHP/MYSQL के साथ उपयोगकर्ता नाम पहले से मौजूद है या नहीं?

MYSQLI संदर्भ:http://php.net/manual/en/mysqli.query। php

पीडीओ संदर्भ:http://php.net/manual/en/book.pdo। php

अधिकांश PHP प्रोग्रामर ने MySQLi और MySQL एक्सटेंशन का उपयोग करने का तरीका खोज लिया है। हालांकि, PHP डेटा ऑब्जेक्ट्स (पीडीओ) ऑब्जेक्ट्स के साथ काम करने के तरीके प्रदान करते हैं और तैयार किए गए बयानों को पुनः प्राप्त करते हैं जो काम को बहुत आसान बनाते हैं।

पीडीओ PHP में एक डेटाबेस एक्सेस टूल है जो कई डेटाबेस में एक समान पहुंच को सक्षम बनाता है। यह डेटाबेस के लिए विशिष्ट सिंटैक्स का समर्थन नहीं करता है, लेकिन यह विभिन्न प्लेटफार्मों और डेटाबेस के बीच अपेक्षाकृत सहज स्विचिंग की अनुमति देता है, जो केवल कनेक्शन स्ट्रिंग को बदलकर किया जा सकता है।

नीचे पीडीओ के बारे में एक छोटी सी जानकारी दी गई है, जो मुख्य रूप से उन प्रोग्रामर्स पर निर्देशित है जो अभी भी MySQL और MySQLi एक्सटेंशन का उपयोग कर रहे हैं, पूर्व की श्रेष्ठता को रेखांकित करते हुए। अगले कुछ पैराग्राफ में विभिन्न पहलुओं का अध्ययन किया जाएगा।

  • डेटाबेस समर्थन

पीडीओ एक्सटेंशन में किसी भी डेटाबेस तक पहुंचने की क्षमता है जिसके लिए पीडीओ ड्राइवर लिखा गया है। कई पीडीओ ड्राइवर उपलब्ध हैं, जिनमें से कुछ में मुफ्त टीडीएस, साइबेस, माइक्रोसॉफ्ट एसक्यूएल सर्वर, आईबीएम डीबी 2, फायरबर्ड/इंटरबेस 6, ओरेकल कॉल इंटरफेस और पोस्टग्रेएसक्यूएल डेटाबेस तक पहुंचने के लिए पीडीओ ड्राइवर शामिल हैं।

ड्राइवर प्रत्येक सिस्टम में स्वचालित रूप से उपलब्ध नहीं होते हैं, इसलिए आपको अपने उपलब्ध ड्राइवर ढूंढ़ने होंगे और उन्हें जोड़ना होगा जिनकी आपको आवश्यकता है।

  • डेटाबेस कनेक्ट करना

डेटाबेस कनेक्शन स्थापित करने के लिए अलग-अलग सिंटैक्स हैं जो विशिष्ट डेटाबेस पर निर्भर करते हैं। पीडीओ का उपयोग करते समय, आप यह सुनिश्चित करना चाहते हैं कि आपके ऑपरेशन ट्राई/कैच ब्लॉक में लिपटे हुए हैं और आप अपवाद तकनीक का उपयोग करते हैं।

सामान्य मामलों में, केवल एक कनेक्शन की आवश्यकता होती है, और डेटाबेस हैंडल को एक नल के रूप में प्रोग्रामिंग करके कनेक्शन बंद कर दिए जाते हैं। आप विभिन्न संसाधन साइटों में अधिक विशिष्ट विकल्प और वाक्य रचना देख सकते हैं।

  • त्रुटि प्रबंधन

पीडीओ एरर-हैंडलिंग के लिए अपवादों के उपयोग की अनुमति देता है, यही वजह है कि आपको पीडीओ को ट्राई/कैच ब्लॉक में लपेटने की सलाह दी जाती है। इस तरह, पीडीओ को एक अपवाद उत्पन्न करने के लिए प्रासंगिक त्रुटि मोड विशेषता में मजबूर किया जा सकता है।

तीन हैं - साइलेंट (डिफ़ॉल्ट), चेतावनी और अपवाद - मोड। बाद के दो DRY प्रोग्रामिंग में अधिक उपयोगी हैं। 'चेतावनी' त्रुटि मोड डिबगिंग के लिए उपयोगी है और 'अपवाद' मोड डेटा को छुपाते समय सुंदर त्रुटि प्रबंधन की अनुमति देता है जिसका उपयोग कोई व्यक्ति आपके सिस्टम का शोषण करने के लिए कर सकता है।

  • सम्मिलित करें और अपडेट करें

पीडीओ एक साधारण दो-चरणीय प्रक्रिया में सामान्य सम्मिलन और अद्यतन डेटाबेस संचालन को संघनित करता है:Prepare >> [Bind] >> Execute . इस पद्धति से, आप पीडीओ के तैयार किए गए बयानों का पूरा लाभ उठा सकते हैं, जो आपको SQL इंजेक्शन के माध्यम से दुर्भावनापूर्ण हमलों से सुरक्षा प्रदान करते हैं।

तैयार किए गए कथन पूर्व-अनुपालित SQL कथन हैं जिन्हें सर्वर पर इस डेटा को भेजकर कई बार निष्पादित किया जा सकता है। वे इस मायने में फायदेमंद हैं कि प्लेसहोल्डर्स के भीतर उपयोग किया जाने वाला डेटा स्वचालित रूप से SQL इंजेक्शन हमलों से सुरक्षित रहता है।

पीडीओ कोड यह जांचने के लिए कि क्या उपयोगकर्ता नाम और पासवर्ड फ़ील्ड डीबी में मौजूद हैं:

 <?php
//Connections
try {
    $handler = new PDO('mysql:host=localhost;dbname=s','root', '*');
    $handler->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e){
    exit($e->getMessage());
}

$name = $_POST['name']; 
$username = $_POST['username']; 
$email = $_POST['email'];   
$password = $_POST['password']; 
$password1 = $_POST['passwordconf'];
$ip = $_SERVER['REMOTE_ADDR'];


//Verifcation 
if (empty($name) || empty($username) || empty($email) || empty($password) || empty($password1)){
    $error = "Complete all fields";
}

// Password match
if ($password != $password1){
    $error = "Passwords do not match";
}

// Email validation

if (!filter_var($email, FILTER_VALIDATE_EMAIL)){
    $error = "Enter a Valid email";
}

// Password length
if (strlen($password) <= 6){
    $error = "Choose a password longer then 6 character";
}

if(!isset($error)){
//no error
$sthandler = $handler->prepare("SELECT username FROM users WHERE username = :name");
$sthandler->bindParam(':name', $username);
$sthandler->execute();

if($sthandler->rowCount() > 0){
    echo "User Already Exists.";
} else {
    //Securly insert into database
    $sql = 'INSERT INTO users (name ,username, email, password, ip) VALUES (:name,:username,:email,:password,:ip)';    
    $query = $handler->prepare($sql);

    $query->execute(array(

    ':name' => $name,
    ':username' => $username,
    ':email' => $email,
    ':password' => $password,
    ':ip' => $ip

    ));
    }
}else{
    echo "error occured: ".$error;
    exit();
}

आशा है कि यह संदर्भ आपके लिए भविष्य की परियोजना में कोड स्वयं विकसित करने के लिए उपयोगी हो सकता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP में SSH पर एक MySQL सर्वर से कनेक्ट करें

  2. मैं हाइबरनेट का उपयोग करके अंतिम सम्मिलित आईडी कैसे प्राप्त कर सकता हूं?

  3. MySQL:दिनांक सीमा के बीच सभी तिथियों का चयन करें और तालिका डेटा मिलान तिथियां प्राप्त करें

  4. अनुकूलन के लिए MySQL हैश इंडेक्स

  5. चेतावनी:mysqli_num_rows() बिल्कुल 1 पैरामीटर की अपेक्षा करता है, 2 दिए गए | mysql |mysqli