Gebruikersnaam en email duplicate error verwerken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Kristof Hendrickx

Kristof Hendrickx

30/08/2013 19:43:42
Quote Anchor link
Hallo,
ik ben een registratieformulier aan het maken waarin zowel gebruikersnaam als emailadres steeds uniek moeten zijn bij een nieuwe registratie, ik heb bijden in de database als uniek ingesteld, dus een error geeft hij zowiezo, nu wil ik verderwerken met de error maar wil ik ook kunnen herkennen of het de gebruikersnaam is of het emailadres is dat er al in staat.

Ik heb volgende code momenteel:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
if(mysql_errno() != 0)
 {
    if(mysql_errno() == 1062)
    {
       echo "Deze gebruikersnaam of dit emailadres is al in gebruik!";
    }
    else
    {
     echo "Whoops, er liep iets fout, probeer opnieuw of als deze fout blijft voorkomen neem contact op met ons";
    }
 }


Zoals je ziet staat hier gewoon een algemene error, of nu de gebruikersnaam of het wachtwoord de error geeft maakt niet uit in dit geval, ik zou er van willen maken dat er meteen op komt of het de gebruikersnaam is of het emailadres.
 
PHP hulp

PHP hulp

19/12/2024 00:16:29
 

30/08/2013 20:02:26
Quote Anchor link
Zelf heb ik het zo gedaan, wellicht heb je er iets aan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$host
= ""; // De host
$user = ""; // De MySQL gebruikersnaam
$pass = ""; // Het MySQL wachtwoord
$datb = ""; // De database

mysql_connect($host, $user, $pass) or die ("Er kan geen verbinding worden gemaakt");
mysql_select_db($datb) or die ("Er kan geen verbinding worden gemaakt met de database");

$query = "SELECT username FROM members WHERE username = '" . mysql_real_escape_string($_POST['username']) . "'";
            
$get = mysql_query($query);
$aantal = mysql_num_rows($get);
if($aantal !== 0) die ('Deze gebruikersnaam bestaat al <a href="register.php">Terug</a>!');
?>


Deze heeft wel een 'die' functie, wat minder vriendelijk overkomt, maar het werkt wel prima. Je code loopt door als de gebruikersnaam niet bestaat. Zo kan je dat ook met een e-mail doen.
Gewijzigd op 30/08/2013 20:02:45 door
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

30/08/2013 20:39:45
Quote Anchor link
Code loopt helemaal niet door met die, dood is dood.
En dat iets wat we niemand toewensen, dus niet gebruiken.
 
Donny Wie weet

Donny Wie weet

30/08/2013 20:55:40
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php

$qr
= mysql_query ("SELECT email, username FROM users WHERE email = $_POST['username'] OR username=$_POST['username']");

if(mysql_num_rows($qr) >= 1){
echo 'Gebruikersnaam en/of email bestaan al!';
}
else {
//Alles goed goed dus je kan toevoegen
}
?>
Gewijzigd op 30/08/2013 20:55:58 door Donny Wie weet
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

30/08/2013 21:06:46
Quote Anchor link
Donny, dat heeft hetzelfde effect en dat is de vraagstelling niet.

Als je wilt weten wat er dubbel ingevoerd wordt zal je altijd 2 query's moeten uitvoeren (om te controleren), tenzij het niet belangrijk is om te weten als allebei duplicate entries zijn.
Want dan kan je gewoon een insert proberen, en krijg je bij dubbele invoer van mysql een foutmelding terug zoals:
Duplicate entry '[email protected]' for key 'idx_email'
Alleen geeft deze dus de eerste duplicate entry die wordt tegenkomen.
 
Kristof Hendrickx

Kristof Hendrickx

30/08/2013 22:09:16
Quote Anchor link
Ik heb het op de manier van Frank gedaan, dit vond ik de simpelste oplossing, aan allen die me wouden helpen: bedankt
 
Erwin H

Erwin H

31/08/2013 01:00:41
Quote Anchor link
En dan krijg je hulp van iemand die er serieus iets vanaf weet (Ger) en dan ga je die vreselijke 'die' oplossing gebruiken? Mensen die 'die' gebruiken in een serieuze website zouden..... nou ja, dat dus niet. Dus dat wil je ook bij je programma niet.

Schrikbarend, dat wel, dan mensen nog steeds dit soort 'oplossingen' aandragen en gebruiken.
 
Donny Wie weet

Donny Wie weet

31/08/2013 08:09:25
Quote Anchor link
Eventueel kan het zo ook nog om een nettere foutmelding op je scherm te krijgen ipv de MySQL error.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php

$qr
= mysql_query ("SELECT email, username FROM users WHERE email = $_POST['username'] OR username=$_POST['username']");

if(mysql_num_rows($qr) >= 1){
   while($row = mysql_fetch_assoc($qr){
      if(isset($_POST['username']) == $row['username']) echo 'De gekozen username bestaat al!<br />';
      if(isset($_POST['email']) == $row['email']) echo 'Dit email adres is al gebruikt!<br />';
}
else {
//Alles goed goed dus je kan toevoegen
}
?>


Code even tussen de -tags gezet[/modedit]
Gewijzigd op 31/08/2013 12:40:06 door Nick Dijkstra
 
Ward van der Put
Moderator

Ward van der Put

31/08/2013 09:59:04
Quote Anchor link
echo 'Dit e-mailadres is al gebruikt!'

Al eens eerder aangekaart, maar zo'n melding is een privacylek. Iedereen kan namelijk met het e-mailadres van een ander controleren of iemand ergens een account heeft.
 
Kristof Hendrickx

Kristof Hendrickx

31/08/2013 10:29:55
Quote Anchor link
@Ward en toch zie ik dit nog op superveel websites voorkomen, dus ik denk nit dat dit tegen de wet in is.

@Erwin ik kan begrijpen dat die manier misschien profesioneler is, maar geef ook eens toe dat de uitkomst hetzelfde is terwijl de code een pak simpeler in mijn ogen eruit ziet, ik ben nog steeds een beginner in php.
 
Obelix Idefix

Obelix Idefix

31/08/2013 11:05:58
Quote Anchor link
Tegen de wet of niet; je hoeft bezoekers toch niet wijzer te maken dan ze zijn?
Een melding dat gebruikersnaam en/of mailadres in gebruik is, volstaat prima.

Dat je een beginner bent hoef je niet telkens te herhalen. Er wordt geprobeerd om je dingen uit te leggen om iets goed/beter te doen. Als je dan zelf kiest voor de meest eenvoudige (en (mogelijk) minst nette) oplossing is dat jouw keuze. 'dat de uitkomst hetzelfde is' vind ik echter geen argument; uiteindelijk wil je, neem ik aan, toch ook iets goeds maken.

Juist als beginner lijkt het me dat je de tips ter harte zou kunnen nemen om naar de toekomst toe goed bezig te zijn. Je kiest er nu kennelijk voor om iets half te doen, terwijl je uitleg krijgt om het goed/beter te doen. Vind dat jammer.
 
Bart V B

Bart V B

31/08/2013 12:20:19
Quote Anchor link
@oblix volgens mij zegt dit het zelfde.
Email is in gebruik.
Beter kan je er van maken:
"U kunt dit email adres niet gebruiken"
Er staat immers niet dat hij in gebruik is.
En zo laat je in het midden of hij is gebruikt.
Een administrator kan het email adres ook hebben geblokkeerd e.d.
Immers hoeft de user alleen maar te weten of iets klopt of niet.
Gewijzigd op 31/08/2013 12:26:04 door Bart V B
 
Ozzie PHP

Ozzie PHP

31/08/2013 14:58:39
Quote Anchor link
Ward van der Put op 31/08/2013 09:59:04:
echo 'Dit e-mailadres is al gebruikt!'

Al eens eerder aangekaart, maar zo'n melding is een privacylek. Iedereen kan namelijk met het e-mailadres van een ander controleren of iemand ergens een account heeft.

+10
 
Eddy E

Eddy E

31/08/2013 18:16:50
Quote Anchor link
Beetje onzinnig.
Ik ga naar Nieuw wachtwoord aanvragen en vul daar een willekeurig mailadres in.
Dan krijg je ook melding dat hij verzonden is (of niet bekend).

En als het mailadres blijkbaar al geregistreerd staat: wat wil je daar dan mee doen?
Ja, dat je een mailadres weet. Blijkbaar wist je die al, want anders vulde je die niet in...
Als je wilt kijken of iemand (een persoon bijbehorend bij een mailadres) op die website geregistreerd staat, probeer je te registeren met dat mailadres. Ook al zal je nooit de bevestiging ontvangen.

Voorbeeld: kijken of je vriendin op een of andere datingsite/pornosite/second-love geregistreerd staat.
Nogal achterdochtig, maar een andere reden kan ik niet verzinnen.
 
Bart V B

Bart V B

31/08/2013 18:41:47
Quote Anchor link
Dat laatste klopt Eddy, maar ook dat noemen we privacy. ;-)

Edit:
Kan nog een betere bedenken.
Al die gasten hier die hun account opzeggen i.v.m. een nieuwe baan/carrière.
Stel nou toch eens dat hun vragen op Internet te vinden zijn...
Gewijzigd op 31/08/2013 18:53:14 door Bart V B
 
Ozzie PHP

Ozzie PHP

01/09/2013 16:24:00
Quote Anchor link
Eddy E op 31/08/2013 18:16:50:
Beetje onzinnig.
Ik ga naar Nieuw wachtwoord aanvragen en vul daar een willekeurig mailadres in.
Dan krijg je ook melding dat hij verzonden is (of niet bekend).

En dat klopt dus ook niet. In zo'n geval moet de melding (ongeveer) als volgt zijn:

"Indien dit e-mailadres bij ons bekend is ontvangt u een mail met verdere instructies."

Er wordt dus compleet in het midden gelaten of de persoon behorende bij het e-mailadres wel of niet geregistreerd is. En dat is de juiste manier.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.