Mi a hiba a PHP kódomban?
Egy Regisztrációs oldalt szeretnék készíteni, de hiba lépett fel és nem látom hol van a probléma!
A probléma: Kiírja, hogy nincs megadva e-mail cím!
php kód:
<?php
if(isset($_POST["form_submit"])) {
$username = $_POST["username"];
$password1 = $_POST["password1"];
$password2 = $_POST["password2"];
$email1 = $_POST["email1"];
$email2 = $_POST["email2"];
$username_regex = '/^[a-z0-9\_\-\.]{3,10}$/';
$email_regex = '/^([A-z0-9\_\.\-]+)@([a-z0-9\_\-\.]+).([a-z]{2,})$/';
$j_nick = $_POST["j_nick"];
$j_age = $_POST["j_age"];
$j_class = $_POST["j_class"];
$j_time = $_POST["j_time"];
$j_time_day = $_POST["j_time_day"];
$error_data = false;
$error_avatar = false;
if(!$username) {
echo "<div class='message error'>Nincs megadva felhasználónév!</div>";
$error_data = true;
} elseif(strlen($username)<=2) {
echo "<div class='message error'>A felhasználónév túl rövid!</div>";
$error_data = true;
} elseif(!preg_match($username_regex, $username)) {
echo "<div class='message error'>A felhasználónév nem tartalmazhat nagybetűt / specális karaktert!</div>";
$error_data = true;
} else {
$sql = @ new mysqli("mysql11.000webhost.com","a5622587_s","geszit605","a5622587_s");
if($sql->connect_errno) {
echo "<div class='message error'>Adatbázis hiba: ", $sql->connect_errno." ".$sql->connect_error;
exit();
}
$username = strip_tags($username);
$username = addcslashes($username, "%'=`");
$query = "SELECT `user_username` FROM `user` WHERE `user_username` = '".$username."'";
$result = $sql->query($query) or die("Hiba!");
if($result->num_rows>0) {
echo "<div class='message error'>A felhasználónév foglalt!</div>";
$error_data = true;
}
$sql->close();
}
if($password1) {
if($password1!=$password2) {
echo "<div class='message error'>A két jelszó nem egyezik!</div>";
$error_data = true;
} elseif(strlen($password1)<=3) {
echo "<div class='message error'>A jelszó legalább 4 karakter kell, hogy legyen!</div>";
}
} else {
echo "<div class='message error'>Nincs megadva jelszó!</div>";
$error_data = true;
}
if($email1) {
if($email1!=$email2) {
echo "<div class='message error'>A két e-mail cím nem egyezik!</div>";
$error_data = true;
} elseif(!preg_match($email_regex, $email1)) {
echo "<div class='message error'>Az e-mail cím nem megfelelő formátumú!</div>";
$error_data = true;
} else {
$sql = @ new mysqli("mysql11.000webhost.com","a5622587_s","geszit605","a5622587_s");
if($sql->connect_errno) {
echo "<div class='message error'>Adatbázis hiba: ", $sql->connect_errno." ".$sql->connect_error;
exit();
}
$query = "SELECT `user_email` FROM `user` WHERE `user_email` = '".$email1."'";
$result = $sql->query($query) or die("Hiba!");
if($result->num_rows>0) {
echo "<div class='message error'>Ezzel az e-mail címmel már regisztráltak!</div>";
$error_data = true;
}
}
} else {
echo "<div class='message error'>Nincs megadva e-mail cím!</div>";
$error_data = true;
}
}
if($error_data==false && $error_avatar==false) {
echo "<div class='message notice'>Sikeres regisztráció!</div>";
$sql = @ new mysqli("mysql11.000webhost.com","a5622587_s","geszit605","a5622587_s");
if($sql->connect_errno) {
echo "<div class='message error'>Adatbázis hiba: ", $sql->connect_errno." ".$sql->connect_error;
exit();
}
$query = "INSERT INTO `user` (`user_username`,`user_email`,`user_password`,`user_nick`,`user_born`,`user_weapons`,`user_time`,`user_time_day`) VALUES ('".$username."', '".$email1."', '".sha1($password1)."', '".$j_nick."', '".$j_age."', '".$j_class."', '".$j_time."', '".$j_time_day."')";
$sql->query($query) or die("Hiba!");
}
if(!isset($_POST["form_submit"]) || $error_data || $error_avatar) {
?>
<!--űrlap tartalma-->
<?php } ?>
Válaszokat előre is köszönöm!
1 - 2 dolog:
van benne pár "avatar" feltöltés részlet, de az lényegtelen!
az adatbázis egy régi nemműködő tesztoldal adatai, ami már nem működik, az általam használt kódban természetesen azzal nincs probléma!
<form align="center" method="POST">
<fieldset>
<table>
<tr>
<td>
Neved:
</td>
<td>
<input type="text" name="username""/>
</td>
</tr>
<tr>
<td>
Jelszavad:
</td>
<td>
<input type="password" name="password1" />
</td>
</tr>
<tr>
<td>
Jelszavad Újra:
</td>
<td>
<input type="password" name="password2" />
</td>
</tr>
<tr>
<td>
E - Mail:
</td>
<td>
<input type="text" name="email2" />
</td>
</tr>
<tr>
<td>
E - Mail Újra:
</td>
<td>
<input type="text" name="email2" />
</td>
</tr>
</table>
<hr style="width: 500px;">
<table>
<tr>
<td>
Nick Neved:
</td>
<td>
<input type="text" name="nick" />
</td>
</tr>
<tr>
<td>
korod:
</td>
<td>
<input type="text" name="j_age" />
</td>
</tr>
<tr>
<td>
class:
</td>
<td>
<input type="text" name="j_class" />
</td>
</tr>
<tr>
<td>
idő:
</td>
<td>
<input type="text" name="j_time" />
</td>
</tr>
<tr>
<td>
idő/nap:
</td>
<td>
<input type="text" name="j_time_day" />
</td>
</tr>
</table>
<br>
<input type="submit" value="Elküldés" name="form_submit" />
</fieldset>
</form>
Úram atyám... ezt nem vettem észre?!
Nagyon szépen köszönöm!
Pedig ezt egyszerű debugolni.
1) Mikor íródik ki az üzenet? Ha nincs beállítva az $email1
2) Mikor nincs beállítva az $email1? Ha nincs $_POST['email1']
3) Kész
és ugyan ennél a kódnál fellépet még 1 hiba..
amikor betöltöm az oldalt, rögtön kiírja, hogy sikeres regisztráció, és hozzá ad mysql -en egy sort üresen...
valaki esetleg tudja mi a hiba?
$_POST["form_submit"] < ezt sehol nem törlöd ki és a rendszer megjegyzi a sessiont.
Az összetákolt SQL utasításokat javítottad már?
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!