uniemozliwienie rejestracji

HTML to podstawy w dziedzinie tworzenia stron WWW, Style CSS warto opanować, bowiem za ich pomocą można dostosować odpowiednio wygląd swojej witryny WWW. Zagłębiamy się dalej i udostępniamy w tym forum możliwość zadawania pytań o JavaScript.
ODPOWIEDZ
lenze
Posty: 3
Rejestracja: pn lis 01, 2004 8:10 pm

uniemozliwienie rejestracji

Post autor: lenze »

jaką metodę (JS) powinienem zastosować aby uniemożliwić rejestrację i zapis do bazy użytkownika z adresem e-mail onet.pl, wp.pl itd... z tzw. darmowych adresów?
pozdrawiam
riker
Nowy
Nowy
Posty: 100
Rejestracja: sob wrz 25, 2004 2:03 pm
Lokalizacja: Wrocław

Re: uniemozliwienie rejestracji

Post autor: riker »

Nie powiem ci jak to zrobic w JS bo nie znam tego jezyka. Za to ty mozesz mi powiedziec jak sprawdzic czy adres jest darmowy. Po tym ze na koncu bedzie przykladowo wp.pl albo onet.pl nie poznasz....
lenze
Posty: 3
Rejestracja: pn lis 01, 2004 8:10 pm

Re: uniemozliwienie rejestracji

Post autor: lenze »

poprzez PHP:


[php]<?php
$domeny = array( 'onet.pl', 'wp.pl', 'o2.pl' );
$tablica = explode( '@', $adresEmail);
if( in_array( $tablica[1], $domeny ) )
{
echo 'zly adres e-mail';
}
else
{
echo 'adres jest ok';
}
?>[/php]
Wojciech Kocjan
Zaczyna działać
Zaczyna działać
Posty: 427
Rejestracja: sob gru 14, 2002 10:51 am

Re: uniemozliwienie rejestracji

Post autor: Wojciech Kocjan »

Jesli dokonujesz tego typu walidacji, to nie mozesz opierac sie tylko na JS - ktore kazdy uzytkownik latwo moze wylaczyc. Pomijajac to co napisal Riker (nie da sie latwo powiedziec, czy skrzynka jest darmowa), domene w JS mozesz sprawdzic dosc prosto:

Kod: Zaznacz cały

var email="[email protected]";
var domena=email.substr((email.lastIndexOf('@')+1));
Oczywiscie zmienna email to adres e-mail, ktory wpisze uzytkownik.

Teraz trzeba sprawdzic czy ta domena nie jest na naszej liscie 'zabronionych':

Kod: Zaznacz cały

zabronione = new Array();
zabronione[0]='poczta.onet.pl';
zabronione[1]='jakis.darmowy.pl';

if (in_array(zabronione,domena)) {
alert('domena zabroniona, wpisz inny mail');
}
No i to bylby koniec, gdyby nie fakt ze w JS nie ma funkcji in_array ;-) Nie ma, ale nie oznacza to ze nie mozna jej napisac - ja co prawda tego zrobic nie potrafie, ale znalazlem na googlach co trzeba:

Kod: Zaznacz cały

function in_array(my_array,my_value){
        //default is incasesensitive!
        caseSensitive = in_array.arguments.length<3?0:in_array.arguments[2];

        for(i=0;i<my_array.length;i++){
               
		if((caseSensitive==0?my_array[i]:my_array[i].toUpperCase())==(caseSensitive==0?my_value:my_value.toUpperCase())){
                 return true;
                }
        }
        return false;
}
No i masz dzialajaca funkcje w JS. Problem jedynie w tym, ze sam musisz recznie wprowadzic 'darmowe' domeny, co nie jest takie proste. Bo np. @wp.pl rownie dobrze moze byc darmowe, jak i płatne, z onetem pewnie tak samo. No i nie zapomnij tego samego wykonac w php - tak jak mowilem na poczatku, JS mozna latwo wylaczyc i przez to ominac to sprawdzanie.

Na koniec zamieszczam gotowy skrypt JS, posklejany z tych wczesniejszych wycinkow, no i dzialajacy.

Kod: Zaznacz cały

<script type="text/javascript">
function in_array(my_array,my_value){
        //default is incasesensitive!
        caseSensitive = in_array.arguments.length<3?0:in_array.arguments[2];

        for(i=0;i<my_array.length;i++){
               
		if((caseSensitive==0?my_array[i]:my_array[i].toUpperCase())==(caseSensitive==0?my_value:my_value.toUpperCase())){
                 return true;
                }
        }
        return false;
}


zabronione = new Array();
zabronione[0]='poczta.onet.pl';

var email="[email protected]";
var domena=email.substr((email.lastIndexOf('@')+1));
if (in_array(zabronione,domena)) {
alert('uwaga. domena zabroniona');
}
</script>
Ostatnio zmieniony pn lis 01, 2004 11:37 pm przez Wojciech Kocjan, łącznie zmieniany 1 raz.
lenze
Posty: 3
Rejestracja: pn lis 01, 2004 8:10 pm

Re: uniemozliwienie rejestracji

Post autor: lenze »

Dziekuje za szybka odpowiedz,
oczywiscie rozpoznanie jest trudne, ale w tym przypadku z ktorym mam sie uporac jest 100% zdecydowane platne lub nieplatne nie moga pochodzic z "darmowych" domen i musi to byc kompilacja JS i PHP

za pomoc serdeczne dzieki
ODPOWIEDZ