Problem z formularzem rejestracji

0

Witam!
Pisze szablon skryptu logowania dla strony www w PHP.

Mam baze MySQL o nazie 'users' a w niej pola id,username,password,firstname,surname

Mój formularz rejestracji wygląda następująco:

 
<?php 
    require 'core.php'; 
    require 'connect.php'; 
      
    if(!loggedin()) 
    { 
        if(isset($_POST['username']) && isset($_POST['password']) && isset($_POST['password_again']) && isset($_POST['firstname']) && isset($_POST['lastname']))
		{
			$username = $_POST['username']; 
			$password = $_POST['password']; 
			$password_again = $_POST['password_again']; 
			$password_hash = md5($password); 
			$firstname = $_POST['firstname']; 
			$surname = $_POST['surname']; 
			if(!empty($username) && !empty($password) && !empty($password_again) && !empty($firstname) && !empty($lastname)) 
			{ 
					if((strlen($username) > 30) || (strlen($firstname) > 40) || (strlen($lastname) > 40) )
					{
						echo 'Przekroczyles limit znaków';
					}
					else
					{
						if($password != $password_again) 
						{ 
							echo 'Hasla musza byc takie same!'; 
						} 
						else
						{ 
							$query = "SELECT `username` FROM `users` WHERE `username`='$username'"; 
							$query_run = mysql_query($query); 
							  
							if(mysql_num_rows($query_run)== 1) 
							{ 
								echo 'Taki login '.$username.' juz istnieje w bazie!'; 
							} 
							else
							{ 
								$query = "INSERT INTO `users` VALUES('','".mysql_real_escape_string($username)."','".mysql_real_escape_string($password_hash)."','".mysql_real_escape_string($firstname)."','".mysql_real_escape_string($surname)."')"; 
								if($query_run = mysql_query($query)) 
								{ 
									header('Location: register_success.php'); 
								} 
								else
								{ 
									echo 'Przepraszamy ale nie moglismy Pana/Pani zarejestrowac!'; 
								} 
							} 
						} 
					}
		}
		else
			{ 
                echo 'Prosze wypelnic wszystkie pola!'; 
            } 
		}
    } 
    else if(loggedin()) 
    { 
        echo 'Jestes juz zarejestrowany i zalogowales sie!'; 
    } 
      
?> 
  
<form action="register.php" method="POST"> 
    Username: <br><input type="text" name="username" maxlength="30" value="<?php if(isset($username)) { echo $username; } ?>"><br> 
    Password: <br><input type="password" name="password"><br> 
    Password again: <br><input type="password" name="password_again"><br> 
    Firstname: <br><input type="text" name="firstname" maxlength="40" value="<?php if(isset($firstname)) { echo $firstname; }?>"><br> 
    Surname: <br><input type="text" name="surname" maxlength="40" value="<?php if(isset($lastname)) { echo $surname; } ?>"><br><br> 
    <input type="submit" value="Register"><br> 
</form> 

Po wprowadzeniu warunku na sprawdzanie długości znaków coś mi się posypało, bardzo proszę czy widzi ktoś błąd?
Cały skrypt logowania składa się z kilku plików jak coś to mogę dokleić.

Pozdrawiam

0

Tutaj mam działającą wersje poprzedniego formularza lecz nie działa to sprawdzanie długości znaków:/

 

<?php 
    require 'core.php'; 
    require 'connect.php'; 
      
    if(!loggedin()) 
    { 
        if(!empty($_POST['username']) && !empty($_POST['password']) && !empty($_POST['password_again']) && !empty($_POST['firstname']) && !empty($_POST['surname'])) 
        { 
            $username = $_POST['username']; 
            $password = $_POST['password']; 
            $password_again = $_POST['password_again']; 
            $password_hash = md5($password); 
            $firstname = $_POST['firstname']; 
            $surname = $_POST['surname']; 
          
              if(isset($username) > 30 || isset($firstname) > 40 || isset($lastname) > 40)
			  {
				echo 'Podane ciagi znaków sa zbyt dlugie!';
			  }
			  else
			  {
				if($password != $password_again) 
                { 
                    echo 'Hasla musza byc takie same!'; 
                } 
                else
                { 
                    $query = "SELECT `username` FROM `users` WHERE `username`='$username'"; 
                    $query_run = mysql_query($query); 
                      
                    if(mysql_num_rows($query_run)== 1) 
                    { 
                        echo 'Taki login '.$username.' juz istnieje w bazie!'; 
                    } 
                    else
                    { 
                        $query = "INSERT INTO `users` VALUES('','".mysql_real_escape_string($username)."','".mysql_real_escape_string($password_hash)."','".mysql_real_escape_string($firstname)."','".mysql_real_escape_string($surname)."')"; 
                        if($query_run = mysql_query($query)) 
                        { 
                            header('Location: register_success.php'); 
                        } 
                        else
                        { 
                            echo 'Przepraszamy ale nie moglismy Pana/Pani zarejestrowac!'; 
                        } 
                    } 
                } 
			  
			  }
				
        }
		else
            { 
                echo 'Prosze wypelnic wszystkie pola!'; 
            } 
    } 
    else if(loggedin()) 
    { 
        echo 'Jestes juz zarejestrowany i zalogowales sie!'; 
    } 
      
?> 
  
<form action="register.php" method="POST"> 
    Username: <br><input type="text" name="username" maxlength="30" value="<?php if(isset($username)) { echo $username; }?>"><br> 
    Password: <br><input type="password" name="password"><br> 
    Password again: <br><input type="password" name="password_again"><br> 
    Firstname: <br><input type="text" name="firstname" maxlength="40" value="<?php if(isset($firstname)) {echo $firstname;} ?>"><br> 
    Surname: <br><input type="text" name="surname"  maxlength="40" value="<?php if(isset($lastname)) { echo $surname;} ?>"><br><br> 
    <input type="submit" value="Register"><br> 
</form> 
0

Po wprowadzeniu warunku na sprawdzanie długości znaków coś mi się posypało

zapomniales najwazniejszego - napisac czym to sie objawia..

0

No bo powinno wywalać exception jeśli wprowadzę np username dłuższy niż 30 znaków i nie rejestrować a nie wywala:(

0

Czyli po prostu przechodzi dalej?
Wypisz sobie te wartości przed ich sprawdzeniem, zapewne coś źle przypisujesz te dane z POST.

np.

echo '<pre>';
var_dump($_POST);
echo '<br />Username: '.$username.' (długość '.strlen($username).')';
echo '<br />firstname: '.$firstname.' (długość '.strlen($firstname).')';
echo '<br />lastnme: '.$lastname.' (długość '.strlen($lastname).')';
echo '</pre>';

i to pewnie rozwiąże Twój problem

1 użytkowników online, w tym zalogowanych: 0, gości: 1