Toon posts:

[php] Wat is een snellere controle bij registratie?

Pagina: 1
Acties:
  • 59 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik heb onderstaand script bedacht, alleen ik heb zo'n vermoeden dat dit nogal traag gaat. Eerst moet php een voor een alle elseif'jes doorlopen voordat er kan worden toegevoegd. Wel moet dit allemaal gecontroleerd worden als het kan.

Is hiervoor misschien een snellere methode? Het werkt wel (ook best snel, maar dat komt omdat ik het lokaal draai) Misschien een case ofzo?

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
    if ($_GET['action'] == 'submit')
    {
        $email_check = mysql_query("SELECT email_address FROM users WHERE email_address='$email_address'");
        $username_check = mysql_query("SELECT username FROM users WHERE username='$username'");
        $email_check = mysql_num_rows($email_check);
        $username_check = mysql_num_rows($username_check);

        if (!$first_name) { echo "Voornaam is verreist";
            include 'join.html'; }
        elseif (!$last_name)    { echo "Achternaam is verreist";
            include 'join.html'; }
        elseif (!$email_address)    { echo "Emailadres is verreist";
            include 'join.html'; }
        elseif (!$username) { echo "Gebruikersnaam is verreist";
            include 'join.html'; }

        elseif ($email_check > 0) { echo "Email bestaat al"; unset($email_address); include 'join.html'; }
        elseif ($username_check > 0) { echo "Gebruiker bestaat al"; unset($username); include 'join.html'; }
        elseif (!controleeremail($email_address)) { echo "Geen geldig emailadres"; unset($email_address);
            include 'join.html'; }

        elseif (strrpos($username, ' ') > 0) { echo "Spaties in de naam zijn verboden"; include 'join.html'; }
        elseif (strspn($username, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") == 0)
            { echo "Er moet tenminste 1 karakater in je naam zitten"; include 'join.html'; }
        elseif (strspn($username, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_")
            != strlen($username)) { echo "Ongeldig karakter in naam."; include 'join.html'; }
        elseif (strspn($first_name, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_")
            != strlen($first_name)) { echo "Ongeldig karakter in voornaam."; include 'join.html'; }
        elseif (strspn($last_name, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_")
            != strlen($last_name)) { echo "Ongeldig karakter in achternaam."; include 'join.html'; }
        elseif (strlen($username) < 4) { echo "Naam moet langer dan 4 karakters zijn"; include 'join.html'; }
        elseif (strlen($username) > 15) { echo "Naam mag niet langer dan 15 karakters zijn"; include 'join.html'; }
        elseif (eregi( "^((1)|(2))$",$username)) { echo "Naam is gereserveerd"; unset($username); include 'join.html'; }

        else
        {
            //toevoegen
        }
    }

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Gebruik regular expressions.
Kijk in de manual bij http://nl.php.net/manual/en/ref.pcre.php

Localhost, sweet localhost


  • Vuurvlieg
  • Registratie: Januari 2000
  • Laatst online: 05-06 15:09
en ff een spelfoutje ik denk dat je vereist bedoelt en niet verreist, wat zou betekenen dat bijv de gebruikersnaam teveel gereist heeft :?

Verwijderd

Topicstarter
Vuurvlieg schreef op 30 januari 2003 @ 14:43:
en ff een spelfoutje ik denk dat je vereist bedoelt en niet verreist, wat zou betekenen dat bijv de gebruikersnaam teveel gereist heeft :?
haha, foutje!! Ze staan allemaal verkeerd omdat ik CTRL-C en CTRL-V heb gebruikt. Zocht het niet om alles opnieuw te typen.

Maar ik ben er nog steeds niet echt uit, die regular expressions snap ik wel een beetje, maar begrijp niet precies waarom ik die in deze code zou kunnen gebruiken. De gebruiker moet namelijk een melding krijgen dat het verkeerd is, en de ingevoerde waarde moet niet automatisch wijzigen ....

Ik heb al wat dingen op google gevonden, maar dat werkt een beetje op dezelfde wijze, dus veel wijzer word ik er niet van.. :'(

Verwijderd

Vuurvlieg schreef op 30 January 2003 @ 14:43:
en ff een spelfoutje ik denk dat je vereist bedoelt en niet verreist, wat zou betekenen dat bijv de gebruikersnaam teveel gereist heeft :?
dan denk ik dat je gereisd bedoelt... :D

[ Voor 182% gewijzigd door Verwijderd op 30-01-2003 16:16 ]


  • Koffie
  • Registratie: Augustus 2000
  • Laatst online: 22:05

Koffie

Koffiebierbrouwer

Braaimeneer

* Koffie gaat zich weer eens bemoeien met dingen waar hij zich helemaal niet mee moet bemoeien :X

Maareuh , op het checken op reeds bestaande namen na enzo, kun je volgens mij alles wat je nu in PHP doet ook in JS doen.
Gebruiker hoeft zo niet op reposne van je script te wachten om erachter te komen dat iets fout is, maar krijgt meteen een error boxje voor de kiezen.

Braaikamer - Smoke&BBQ


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 22-08 01:56
Koffie schreef op 30 January 2003 @ 17:10:
* Koffie gaat zich weer eens bemoeien met dingen waar hij zich helemaal niet mee moet bemoeien :X

Maareuh , op het checken op reeds bestaande namen na enzo, kun je volgens mij alles wat je nu in PHP doet ook in JS doen.
Gebruiker hoeft zo niet op reposne van je script te wachten om erachter te komen dat iets fout is, maar krijgt meteen een error boxje voor de kiezen.
Heel leuk, maar dan moet je je hele database naar de client gaan sturen, wat je in verband met zoweel privacy als performance niet wil, en je moet nog steeds op de server checken of je wel geldige invoer krijgt, om de wannabe 'hackers' niet teveel ter wille te zijn. Daar schiet je dus helemaal niets mee op.

Misschien kun je je beter niet bemoeien met dingen waar je je helemaal niet mee moet bemoeien. ;) (NOFI!)

Checks op niet-ingevulde velden en andere controles die niet afhankelijk zijn van de inhoud van de database, kunnen eventueel ook in JavaScript uitgevoerd worden (naast de PHP controle op de server), dat is wel wat prettiger voor de gebruiker.

[ Voor 18% gewijzigd door Soultaker op 30-01-2003 17:16 ]


  • Koffie
  • Registratie: Augustus 2000
  • Laatst online: 22:05

Koffie

Koffiebierbrouwer

Braaimeneer

Wat heeft je DB c.q. privacy te maken met het feit dat je dmv JS check of je een ongeldige karakter, spatie teveel ofzo in een invoerveld gebruikt :?

Ik doelde daar dus op, niet op het checken van dubbele users, dat doe je weer wel serverside, maar dat is een veel kleinere routine ;)

Braaikamer - Smoke&BBQ


  • Koetjeboe
  • Registratie: Maart 2002
  • Laatst online: 21-08 14:29

Koetjeboe

Boe, zegt de koe

Javascript checken is zowiezo altijd handig om dat, zoals Koffie al zei, de user gelijk weet dat ie het verkeerd heeft gedaan :). Kijken of een naam of iets dergelijks bestaat is wat lastiger om meteen te checken (denk ik?) dus dat kan je daarna nog doen. Zowiezo alles daarna ook nog eens door een php script halen lijkt mij....

Owja, de snelheid van een php registratie script is denk ik niet echt super belangrijk, gebeurt als het goed is maar 1 keer per user. Belangrijk is dat het goed gebeurt ;)

Ohhi - Familie foto's delen via een europees prive sociaal netwerk


Verwijderd

Topicstarter
Bedankt allemaal. Ik ga dan denk ik met Javascript controleren of de velden daadwerkelijk zijn ingevuld, en/of vreemde tekens bevatten, en de rest (of username al bestaat enzo) met php.

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Verwijderd schreef op 30 januari 2003 @ 14:04:
Ik heb onderstaand script bedacht, alleen ik heb zo'n vermoeden dat dit nogal traag gaat. Eerst moet php een voor een alle elseif'jes doorlopen voordat er kan worden toegevoegd. Wel moet dit allemaal gecontroleerd worden als het kan.

Is hiervoor misschien een snellere methode? Het werkt wel (ook best snel, maar dat komt omdat ik het lokaal draai) Misschien een case ofzo?
Nee, dit is de snelste methode. Een paar duizend ifs mag nog geen probleem vormen. Regular Expressions zijn langzamer.

Ik zou trouwens wel even kijken naar de functie AddSlashes().
Koetjeboe schreef op 30 januari 2003 @ 17:52:
Javascript checken is zowiezo altijd handig om dat, zoals Koffie al zei, de user gelijk weet dat ie het verkeerd heeft gedaan :). Kijken of een naam of iets dergelijks bestaat is wat lastiger om meteen te checken (denk ik?) dus dat kan je daarna nog doen. Zowiezo alles daarna ook nog eens door een php script halen lijkt mij....

Owja, de snelheid van een php registratie script is denk ik niet echt super belangrijk, gebeurt als het goed is maar 1 keer per user. Belangrijk is dat het goed gebeurt ;)
JS is vooral handig om JS errors te genereren op allerlei browsers en biedt nauwelijks toegevoegde waarde.
Verwijderd schreef op 30 januari 2003 @ 18:36:
Serverside zou je daar eigenlijk ook wel op moeten checken, omdat grappenmakers anders alsnog met een omweggetje met ongeldige namen kunnen registreren.
Eigenlijk?
Serverside is 'verplicht', clientside is optioneel.

[ Voor 15% gewijzigd door Olaf van der Spek op 30-01-2003 18:37 ]


Verwijderd

Serverside zou je daar eigenlijk ook wel op moeten checken, omdat grappenmakers anders alsnog met een omweggetje met ongeldige namen kunnen registreren.

  • CyBeRSPiN
  • Registratie: Februari 2001
  • Nu online

CyBeRSPiN

sinds 2001

Verwijderd schreef op 30 januari 2003 @ 18:36:
Serverside zou je daar eigenlijk ook wel op moeten checken, omdat grappenmakers anders alsnog met een omweggetje met ongeldige namen kunnen registreren.
Idd, "creatief surfen" heet dat in kiddie-taal :/

  • AK47
  • Registratie: Juli 2001
  • Laatst online: 04-05-2024
- Gebruik Regexp, bijv. met de 'preg_match' functie een pattern "matchen". Dus bijvoorbeeld ook een pattern van een e-mail adres.
- Als je bijv. veel variabelen wilt checken op als ze wel wat bevatten kun je bijv. 't volgende doen:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
$vars = Array (
    "voornaam",
    "achternaam",
    "woonplaats"
);
$rows = count ($vars);

for ($i = 0; $i < $row; $i++) {
    if ($$vars[$i] == "") {
        echo "Het veld \"" . $vars[$i] . "\" is verplicht";
        break;
    }
}


Zoiets maakt het niet bepaald sneller (of trager), maar het bespaart je code natuurlijk ;)

  • MisterData
  • Registratie: September 2001
  • Laatst online: 21:49
OlafvdSpek schreef op 30 January 2003 @ 18:34:

JS is vooral handig om JS errors te genereren op allerlei browsers en biedt nauwelijks toegevoegde waarde.
En jij komt zeker nooit op de Tweakers.net Frontpage? Ik weet dat ik mijn eigen website 3x zo klein heb gekregen, door slim JavaScript te gebruiken. Dus niet het volgende:

PHP:
1
2
3
for($a=0;$a<$x;$a++) {
   echo "<a href='www.link.com/news.php?id=123123123' class='blaa' onmouseover='bla'>tekst</a>";
}


maar bijvoorbeeld:
PHP:
1
2
3
4
5
6
7
<?php
echo "<script language='JavaScript'>";
for($a=0;$a<$x;$a++) {
   echo "link('link',123123);";
}
echo "</script>";
?>


Dit scheelt zeker in paginagrootte en dat is wel zo vriendelijk voor de modemers. Het vreet minder serverload, omdat PHP minder hoeft te parsen (hoewel dit niet echt merkbaar zal zijn). Verder is het voor mij als kabelgebruiker ook wel fijn als een pagina snel verschijnt. Met een snelle computer en een goede (lees: Mozilla/Phoenix) browser gaat het altijd goed. Je moet wel cross-browser javascript leren schrijven, anders kunnen sommigen je site niet bekijken[sub]* MisterData kotst op IE-only designers :r[/sub]

Dat waren mijn 2 eurocent :)

Verwijderd

En als alternatief voor die elseif'jes kan je het switch statement gebruiken (php.net/switch)

Verwijderd

Om een snelle check met php te doen (meer een code reductie)

Zet ten eerste je formuliervelden als een arraynaam. bv: <input name=register[naam]>

Vervolgens kun je dan met een lus al je velden checken

PHP:
1
2
3
4
5
6
7
if (is_array($register)) {
  foreach ($register as $key=>$value) {
    if (!$value) {
      echo "$key is niet ingevuld";
    }
  }
}

[php]

  • Dewoudloper
  • Registratie: Augustus 2001
  • Laatst online: 16-03-2025
over kicken gesproken!


Door AK47 - Thursday 30 January 2003 20:46


Door MisterData - Tuesday 15 April 2003 08:34

dat is pas een ckick! :*)

[ Voor 4% gewijzigd door Dewoudloper op 15-04-2003 09:05 ]


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
MisterData heeft een klein foutje gemaakt ;) Kan gebeuren :)
Pagina: 1

Dit topic is gesloten.