Witam, posługując się tutorialem z w3schools napisałem taki formularz:
Imię: <input type="text" name="name" value="
<?php echo $name;?>">
<span class="error">*
<?php echo $nameErr;?></span><br><br>
Nazwa użytkownika: <input type="text" name="username" value="
<?php echo $username;?>">
<span class="error">*
<?php echo $usernameErr;?></span><br><br>
Mail: <input type="text" name="email" value="
<?php echo $email;?>">
<span class="error">*
<?php echo $emailErr;?></span><br><br>
Hasło: <input type="password" name="password" value="
<?php echo $password;?>">
<span class="error">*
<?php echo $passwordErr;?></span><br><br>
<input type="submit" name="submit" value="Potwierdź">
</form>
oraz poniższy skrypt php do niego:
<?php
// define variables and set to empty values
$name = $username = $email = $password = "";
$nameErr = $usernameErr = $emailErr = $passwordErr = "";
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
if (empty($_POST["name"])) {$nameErr = "Imię jest wymagane!";}
else
{
$name = test_input($_POST["name"]);
if (!preg_match("/^[a-zA-ZążśźęćńółĄŻŚŹĘĆŃÓŁ]*$/u",$name)) {$nameErr = "Niepoprawne imię, tylko litery są dozwolone"; }
}
if (empty($_POST["username"])) {$usernameErr = "Nazwa użytkownika jest wymagana!";}
else
{$username = test_input($_POST["username"]);}
if (empty($_POST["email"])) {$emailErr = "Mail jest wymagany!";}
else
{
$email = test_input($_POST["email"]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL))
{$emailErr = "Niepoprawny mail";}
}
if (empty($_POST["password"])) {$passwordErr = "Hasło jest wymagane!";}
else
{$password = test_input($_POST["password"]);}
}
function test_input($data)
{
return $data;
}
?>
To wszystko powyżej działa elegancko, obsługa błędów poprawnie wyrzuca errory itp. Problem w tym, że niestety nie było nic napisane jak wysłać to wszystko na serwer. Próbowałem dopisać potrzebny kod w oparciu o gotowy skrypt znaleziony na forum ale jako że jestem początkujący w php/mysql niestety nic z tego nie wyszło.
Prosiłbym o pomoc w poprawieniu kodu żebym mógł tworzyć konta na serwerze.
Poniżej moja niedziałająca wersja, po kliknięciu wyślij w formularzu dostaje błąd:
"Wystąpił błąd i nie udało się zarejestrować użytkownika."
<?php
require_once "connect.php"; //dane do serwera
$polaczenie = @new mysqli($host,$user,$pass,$name);
if($polaczenie->connect_errno!=0)
{
echo "Error: ".$polaczenie->connect_errno; }
// define variables and set to empty values
$name = $username = $email = $password = "";
$nameErr = $usernameErr = $emailErr = $passwordErr = "";
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
if (empty($_POST["name"])) {$nameErr = "Imię jest wymagane!";}
else
{
$name = test_input($_POST["name"]);
if (!preg_match("/^[a-zA-ZążśźęćńółĄŻŚŹĘĆŃÓŁ]*$/u",$name)) {$nameErr = "Niepoprawne imię, tylko litery są dozwolone"; }
}
if (empty($_POST["username"])) {$usernameErr = "Nazwa użytkownika jest wymagana!";}
else
{$username = test_input($_POST["username"]);}
if (empty($_POST["email"])) {$emailErr = "Mail jest wymagany!";}
else
{
$email = test_input($_POST["email"]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL))
{$emailErr = "Niepoprawny mail";}
}
if (empty($_POST["password"])) {$passwordErr = "Hasło jest wymagane!";}
else
{$password = test_input($_POST["password"]);}
$errors = '';
if ($existsLogin[0] >= 1) $errors .= 'Nazwa użytkownika jest już zajęta<br />';
if ($errors != '')
{
echo '<p class="error">Rejestracja nie powiodła się: <br />'.$errors.'</p>'; }
else
{
mysql_query("INSERT INTO users (name, username, email, password) VALUES('$name','$username','$email','$password');") or
die ('<p class="error">Wystąpił błąd i nie udało się zarejestrować użytkownika.</p>');
echo '<p class="success">Konto pomyślnie założone. Możesz teraz się zalogować</p>'; }
}
function test_input($data)
{
return $data;
}
$polaczenie->close();
?>
Ten post edytował envoray 20.08.2015, 01:28:41