Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Formularz rejestracyjny
Forum PHP.pl > Forum > Przedszkole
artdem
Witam,

Nie jestem pewien, czy zadaję to pytanie w odpowiednim dziale - chodzi o rejestrację użytkowników w serwisie. Mam napisany skrypt wraz z walidacją użytkownika (żeby nie powtarzały się maile i loginy) i niby wszystko jest ok, ale nie działa. Tzn. mogę się wielokrotnie rejestrować na ten sam mail i ten sam login. Poniżej przesyłam skrypt i jeśli jest ktoś w stanie pomóc, to będę bardzo wdzięczny. smile.gif

Kod
<?  session_start();
include "connect.php";
$result = mysql_query("SELECT * FROM sitesettings");
while($row = mysql_fetch_array($result))
$title = "".$row["domain"]." - Zarejestruj się";
include "header.php";
$usrv = 'Wprowadź nazwę użytkownika';
$usrt = 'Nazwa użytkownika zajęta';
$usri = 'Niedozwolone znaki';
$passv = 'Wprowadź hasło';
$passn = 'Wprowadzone hasła się nie zgadzają';
$emailv = 'Wprowadź prawidłowy adres e-mail';
$emailt = 'Podany adres został już użyty';
$name = strtolower($_POST['username-reg']);  
$namecheck = mysql_query("SELECT * FROM `username` WHERE username = '".mysql_real_escape_string('$name')."'") or die (mysql_error());
$r = mysql_numrows($namecheck);
$ename = strtolower($_POST['email-reg']);
$namecheck = mysql_query("SELECT * FROM `username` WHERE email = '".mysql_real_escape_string('$ename')."'") or die (mysql_error());
$e = mysql_numrows($namecheck);
?>
<?
function filename_safe($filename) {
$temp = $filename;
$temp = strtolower($temp);
$temp = str_replace(" ", "_", $temp);
$temp = str_replace("'", "", $temp);
$temp = str_replace("+", "_", $temp);


// Loop through string
$result = '';
for ($i=0; $i<strlen($temp); $i++) {
if (preg_match('([0-9]|[a-z]|_)', $temp[$i])) {
$result = $result . $temp[$i];
}
}

// Return filename
return $result;
}
?>
<?
                        ob_start();
                        $pattern = "/^([a-zA-Z0-9_])+$/";
                        $usrn = $_POST['username-reg'];
                        if(isset($_POST['register'])){
                            if(empty($_POST['username-reg']) || $r > 0 || $e > 0 || empty($_POST['password-reg']) || $_POST['passwordv-reg'] != $_POST['password-reg'] || $_POST['email-reg'] == "" || !preg_match($pattern,$usrn)){
                            }else{
                            $usname = strtolower($_POST['username-reg']);
                            $uspass = $_POST['password-reg'];
                            $uspassv = $_POST['passwordv-reg'];
                            $emai = strtolower($_POST['email-reg']);
                            $sr = "1";
                            $_SESSION['username-reg'] = $usname;
                            $_SESSION['password-reg'] = $uspass;
                            $_SESSION['passwordv-reg'] = $uspassv;
                            $_SESSION['email-reg'] = $emai;
                            $_SESSION['status'] = $sr;
                            header( 'Location: verify.php' );
                            }
                        };
                        ob_flush();
?>

   <div class="art-Post">
                            <div class="art-Post-tl"></div>
                            <div class="art-Post-tr"></div>
                            <div class="art-Post-bl"></div>
                            <div class="art-Post-br"></div>
                            <div class="art-Post-tc"></div>
                            <div class="art-Post-bc"></div>
                            <div class="art-Post-cl"></div>
                            <div class="art-Post-cr"></div>
                            <div class="art-Post-cc"></div>
                            <div class="art-Post-body">
                        <div class="art-Post-inner">
                            <div class="art-PostMetadataHeader">
                                <h2 class="art-PostHeaderIcon-wrapper">
                                    <img src="images/PostHeaderIcon.png" width="32" height="32" alt="PostHeaderIcon" />
                                    <span class="art-PostHeader">Rejestracja</span>
                                </h2>
                            </div>
                            <div class="art-PostContent"><div class="cleared1"></div>

   <form action="" method="post" name="myform" id="myform">
        <table width="100%" border="0" align="left" cellpadding="3" cellspacing="3" class="forms">

        <tr>
            <td>Użytkownik</td>
            <td><?
                          if(isset($_POST['register'])){
                              if(empty($_POST['username-reg'])){
                              ?>
                              <span class="error">
                              <? echo $usrv;?>
                              </span>
                              <?
                              }
                              if(!empty($_POST['username-reg'])){
                              if(!preg_match($pattern, $usrn)){
                              ?>
                              <span class="error">
                              <? echo $usri;?>
                              </span>
                              <?
                              }
                              if($r > 0){
                              ?>
                              <span class="error">
                              <? echo $usrt;?>
                              </span>
                              <?
                              }
                              }
                          };
                          ?>
                          <input type="text" name="username-reg" class="textfield" id="u_empty" value="<? echo $_POST['username-reg']; echo $ur ?>" />


PS. Hosting mam na home.pl. :/
pedro84
Ja tam nie widzę, żebyś gdziekolwiek w tym spaghetti blokował rejestrację przy zduplikowanym emailu.
artdem
Ta część reaguje na inne errory (niezgadzające się hasła, niewłaściwy email, nieprawidłowe znaki), ale czy do powtarzających się loginów powinienem jeszcze coś dołożyć?

Kod
<td>Użytkownik</td>
            <td><?
                          if(isset($_POST['register'])){
                              if(empty($_POST['username-reg'])){
                              ?>
                              <span class="error">
                              <? echo $usrv;?>
                              </span>
                              <?
                              }
                              if(!empty($_POST['username-reg'])){
                              if(!preg_match($pattern, $usrn)){
                              ?>
                              <span class="error">
                              <? echo $usri;?>
                              </span>
                              <?
                              }
                              if($r > 0){
                              ?>
                              <span class="error">
                              <? echo $usrt;?>
                              </span>
                              <?
                              }
                              }
                          };
                          ?>
                          <input type="text" name="username-reg" class="textfield" id="u_empty" value="<? echo $_POST['username-reg']; echo $ur ?>" />


Cytat(pedro84 @ 6.05.2011, 12:21:42 ) *
Ja tam nie widzę, żebyś gdziekolwiek w tym spaghetti blokował rejestrację przy zduplikowanym emailu.


Kod
            <td>Email</td>
            <td><?
                          if(isset($_POST['register'])){
                              if($_POST['email-reg'] == "")
                              {
                              ?>
                              <span class="error">
                              <? echo $emailv; ?>
                              </span>
                              <?
                              }
                              if($_POST['email-reg'] != ""){
                                  if($e > 0){
                                  ?>
                                  <span class="error">
                                  <? echo $emailt; ?>
                                  </span>
                                  <?
                                  }
                              }
                          };
                          ?>
                          <input type="text" name="email-reg" class="textfield" id="e_empty" value="<? echo $_POST['email-reg']; echo $em; ?>" /> (Wymagany właściwy adres w celu weryfikacji) </td>


Nie wrzuciłem wszystkiego.
nospor
1) Zacznij proszę używać właściwe bbcode. Do kodu co tu masz używa się bbcode PHP
2) Zapoznaj się proszę z tematem i zastosuj do podanych tam wskazówek
Temat: Jak poprawnie zada pytanie
3) Przenosze
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.