Witam. Robię właśnie panel rejestracyjny na stronę i chcę przy sprawdzaniu poprawnosci danych dodać wyrażenia regularne. Otóż udało się, jednak w przypadku gdy jako pierwsza litera występuje polski znak to wywala mi błąd. Natomiast gdy polski znak znajduje się dalej to nie ma problemu. Proszę o wyjaśnienie w czym jest problem?
<?php
require_once('includes/config.inc.php');
$page_title = 'Rejestracja';
include ('includes/header.html');
if(isset($_POST['submitted'])){
$fn = $ln = $e = $p = FALSE;
if(preg_match('/^[A-ZŁŚ]{1}+[a-ząęółśćżźń\'.-]{1,19}$/i', $trimmed['first_name'])){ $fn = mysqli_real_escape_string($dbc, $trimmed['first_name']);
}else{
echo '<p class="error">Proszę podać poprawne imię</p>'; }
if(preg_match('/^[A-ZŁŚ]{1}+[a-ząęółśćżźń\'.-]{1,39}$/i', $trimmed['last_name'])){ $ln = mysqli_real_escape_string($dbc, $trimmed['last_name']);
}else{
echo '<p class="error">Proszę podać poprawne nazwisko</p>'; }
if(preg_match('/^[\w.-]+@[\w.-]+\.[A-Za-z]{2,6}$/',$trimmed['email'])){ $e = mysqli_real_escape_string($dbc, $trimmed['email']);
}else{
echo '<p>Proszę wprowadzić adres email</p>'; }
if(preg_match('/^\w{4,20}$/',$trimmed['password1'])){ if($trimmed['password1'] == $trimmed['password2']){
$p = mysqli_real_escape_string($dbc, $trimmed['password1']);
}else{
echo '<p class="error">Za drugim razem wpisałeś inne hasło</p>'; }
}else{
echo '<p class="error">Proszę podać prawidłowe hasło!</p>'; }
if($fn && $ln && $e && $p){
$q = "SELECT user_id FROM user WHERE email='$e'";
$r = mysqli_query
($dbc, $q) or
trigger_error("ZAPYTANIE: $q\n<br />Błąd MYSQL: ".mysqli_error
($dbc));
if(mysqli_affected_rows($dbc) == 0){
$q = "INSERT INTO user (email, pass, first_name, last_name, active, registration_date) VALUES ('$e', SHA1($p),'$fn','$ln','$a',NOW() )";
$r = mysqli_query
($dbc, $q) or
trigger_error("Zapytanie: $q\n<br />Błąd MySQL: ".mysqli_error
($dbc));
if(mysqli_affected_rows($dbc) == 1){
$body = "Dziękujemy za zarejstrowanie się na stronie. Aby uaktywnić konto kliknij poniższe łącze:\n\n";
$body .= BASE_URL
.'active.php?x='.urlencode($e)."&y=$a"; mail($trimmed['email'], 'Potwierdzenie rejestracji',$body, 'From: admin@site.pl'); echo '<h3>Dziękujemy za zarejstrowanie się! Pod Twój adres email został wysłana wiadomość z kodem aktywacyjnym. Kliknij w nigo by móc korzystać w pełni ze strony!</h3>'; include('includes/footer.html');
}else{
echo '<p class="error">Konto nie zostało zarejestrowane ze względu na błąd sytemu. Przepraszamy za niedogodność.</p>'; }
}else{
echo '<p class="error">Ten adres e-mail jest już w bazie</p>'; }
}else{ //Jeżeli weryfikacja hasła nie powiodła się
echo '<p class="error">Proszę ponowanie wprowadzić hasła i spróbować jeszcze raz.</p>'; }
mysqli_close($dbc);
}//Koniec głównej instrukcji warunkowej
?>
<h1>Rejestracja</h1>
<form action="register.php" method="post">
<fieldset>
<p><b>Imię:</b><input type="text" name="first_name" size="20" maxlength="20" value="
<?php if(isset($trimmed['first_name'])) echo $trimmed['first_name']; ?>"/></p>
<p><b>Nazwisko:</b><input type="text" name="last_name" size="20" maxlength="40" value="
<?php if(isset($trimmed['last_name'])) echo $trimmed['last_name']; ?>"/></p>
<p><b>Adres e-mail:</b><input type="text" name="email" size="30" maxlength="80" value="
<?php if(isset($trimmed['email'])) echo $trimmed['email']; ?>"/></p>
<p><b>Hasło:</b><input type="password" name="password1" size="20" maxlength="20" /><small>Hasło musi zawierać od 4 do 20 znaków(tylko litery, cyfry i znak podkreślenia)</small></p>
<p><b>Potwierdzenie hasła:</b><input type="password" name="password2" size="20" maxlength="20" /></p>
</fieldset>
<div align="center"><input type="submit" name="submit" value="Rejestracja"/></div>
<input type="hidden" name="submitted" value="TRUE" />
</form>
<?php
include('includes/footer.html');
?>