sql >> Database >  >> RDS >> Mysql

Hoe te controleren of gebruikersnaam al bestaat met PHP/MYSQL

MYSQLI-referentie:http://php.net/manual/en/mysqli.query. php

BOB-referentie:http://php.net/manual/en/book.pdo. php

De meeste PHP-programmeurs hebben ontdekt hoe ze MySQLi- en MySQL-extensies kunnen gebruiken. PHP Data Objects (PDO) bieden echter manieren om met objecten te werken en voorbereide instructies op te halen die het werk veel gemakkelijker maken.

PDO is een databasetoegangstool in PHP die uniforme toegang tot meerdere databases mogelijk maakt. Het ondersteunt geen syntaxis die specifiek zijn voor databases, maar het maakt relatief naadloos schakelen tussen verschillende platforms en databases mogelijk, wat eenvoudig kan worden gedaan door de verbindingsreeks te wijzigen.

Hieronder vindt u een beetje informatie over PDO, voornamelijk gericht op programmeurs die nog steeds MySQL- en MySQLi-extensies gebruiken, waarin de superioriteit van de eerste wordt geschetst. In de volgende paragrafen zullen verschillende aspecten worden bestudeerd.

  • Database-ondersteuning

De PDO-extensie heeft de mogelijkheid om toegang te krijgen tot elke database waarvoor het PDO-stuurprogramma is geschreven. Er zijn veel PDO-stuurprogramma's beschikbaar, waaronder enkele PDO-stuurprogramma's die bedoeld zijn om toegang te krijgen tot Free TDS, Sybase, Microsoft SQL Server, IBM DB2, Firebird/Interbase 6, Oracle Call Interface en PostgreSQL-databases, en nog veel meer.

De stuurprogramma's zijn niet automatisch beschikbaar in elk systeem, dus u zult uw beschikbare stuurprogramma's moeten vinden en de stuurprogramma's toevoegen die u nodig hebt.

  • Database verbinden

Er zijn verschillende syntaxis om databaseverbindingen tot stand te brengen die afhankelijk zijn van specifieke databases. Wanneer u PDO gebruikt, wilt u ervoor zorgen dat uw bewerkingen zijn verpakt in try/catch-blokken en dat u de uitzonderingstechniek gebruikt.

In normale gevallen hoeft er slechts één verbinding te worden gemaakt en worden verbindingen gesloten door de database-handle als een null te programmeren. U kunt meer specifieke opties en syntaxis opzoeken op verschillende bronnensites.

  • Foutafhandeling

PDO maakt het gebruik van uitzonderingen voor foutafhandeling mogelijk, daarom wordt u geadviseerd om PDO in try/catch-blokken in te pakken. Op deze manier kan PDO in het relevante foutmodusattribuut worden gedwongen om een ​​uitzondering te produceren.

Er zijn drie - stille (standaard), waarschuwings- en uitzonderingsmodi. De laatste twee zijn nuttiger bij DRY-programmering. De 'Waarschuwing'-foutmodus is handig voor het debuggen en de 'uitzondering'-modus zorgt voor een elegante foutafhandeling terwijl gegevens worden verborgen die een persoon zou kunnen gebruiken om uw systeem te misbruiken.

  • Invoegingen en updates

PDO comprimeert de algemene bewerkingen voor het invoegen en bijwerken van databases in een eenvoudig proces in twee stappen:Prepare >> [Bind] >> Execute . Met deze methode kunt u optimaal profiteren van de voorbereide instructies van PDO, die u bescherming bieden tegen kwaadaardige aanvallen door middel van SQL-injectie.

Voorbereide instructies zijn vooraf ingevulde SQL-instructies die meerdere keren kunnen worden uitgevoerd door deze gegevens naar de servers te verzenden. Ze hebben het voordeel dat gegevens die in de tijdelijke aanduidingen worden gebruikt, automatisch worden beschermd tegen SQL-injectieaanvallen.

BOB-code om te controleren of de velden voor gebruikersnaam en wachtwoord in de database aanwezig zijn:

 <?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();
}

Ik hoop dat deze referentie nuttig voor u kan zijn om de codes in het toekomstige project zelf te ontwikkelen.



  1. Maak verbinding met een mysql-database via SSH via PHP

  2. Hoe krijg je een rijrangschikking?

  3. Hoe NU() werkt in MariaDB

  4. JOIN-query's versus meerdere query's