Autor Zpráva
Luko
Profil *
<?php
    include "header.php";

    if($_SESSION['user']){
        echo "<meta http-equiv=\"refresh\" content=\"3;URL=index.php\">Prihlásený užívateľ sa nemôže zaregistrovať.";
    }		
?>

            <h1>Registrácia:</h1>
<?php
    if(!empty($_POST['register'])){
        if(empty($user) || empty($email) || empty($password1) || empty($password2)){
            $error = 1;
            $warning = "<h2>Nevyplnili ste všetky potrebné polia.</h2>";
        }
        if(strlen($user) < 4){
            $error = 1;
            $warning .= "<h2>Menu musí mať minimálne 4 znaky.</h2>";
        }
        if(!ereg("^(.+)@(.+)\\.(.+)$", $email)){
            $error = 1;
            $warning .= "<h2>E-mail je zadaný v nesprávnom tvare.</h2>";
        }
        if($password1 != $password2){
            $error = 1;
            $warning .= "<h2>Heslá sa nezhodujú.</h2>";
        }
        if($error != 1){
            @$verification = mysql_query("SELECT user FROM users WHERE user = '$user'");

            if($user == $verification){
                $error = 1;
                $warning .= "<h2>Toto meno už používa niekto iný.</h2>";
            }else{
                $password = md5($password1);
                $sql = mysql_query("INSERT INTO users WHERE (user,email,password) VALUES ($user,$email,$password)");

                echo "<h3>Ďakujeme za registráciu. Na váš e-mail vám bola odoslaná správa s vašimi registračnými údajmi.</h3>";

                if(!$sql){
                    $error = 1;
                    $warning .= "<h2>Registrácia zlyhala, kontaktujte administrátora.</h2>";
                }
            }
        }
    }
    if(empty($_POST['register']) || $error == 1){
        echo '	
            <form action="" method="post">
                Meno:<br />
                <input type="text" name="user" value="'.$_POST['user'].'" size="30"><br />
                E-mail:<br />
                <input type="text" name="email" value="'.$_POST['email'].'" size="30"><br />
                Heslo:<br />
                <input type="password" name="password1" value="" size="30"><br />
                Overenie hesla:<br />
                <input type="password" name="password2" value="" size="30"><br />
                <input type="submit" name="register" value="Registrovať">
            </form>
             ';
        echo $warning;
		echo $sql;
    }
    include "footer.php";
?>



...nepracuje to správne a neviem prečo. Môžete mi s tým pomôcť ??? ;)
Nox
Profil
A na co si sám přišel, když jsi odhaloval tu chybu? Abys to jen celé neházel na nás a trochu nám pomoh;)
Luko
Profil *
No výsledkom registrácie bolo, že vypísalo error o zlyhaní registrácie, ale aj to, že registrácia prebehla úspešne, no do databázy sa údaje neuložili...
nightfish
Profil
hodnoty sloupců řetězcového typu (char, varchar) v SQL dotazu je třeba uzavřít do apostrofů
kód je náchylný na sql injection a je v něm i pěkná race-condition
Luko
Profil *
no hodnoty som dal do apostrofov, ale stále tá istá chyba. :(
Nox
Profil
Luko
Máš v tom dotazu nadbytečné to "WHERE"
Luko
Profil *
Nox: chyba musí byť ešte niekde inde, lebo problém stále pretrváva... :(
kvoky
Profil
@$verification = mysql_query("SELECT user FROM users WHERE user = '$user'"); 

if($user == $verification){


- vůbec tam nemáš žádný mysql_fetch, udelal bych to ale asi nejak takhle:

@$verification = mysql_num_rows(mysql_query("SELECT user FROM users WHERE user = '$user'")); 

if($verification>0){


Bohuzel to ale asi neresi Tvojí situaci, pouze by to nepoznalo že už tam user už je.
Luko
Profil *
No už som vyriešil menej podstatnú časť problému, a to tú, že už sa nezobrazujú obidve upozornenia naraz, ale registrácia stále zlyháva, do databázy sa nič neuloží, pritom pripojenie k nej mám v poriadku, aj tabuľku som skontroloval...
Vyzerá to tak, že problém bude asi v tomto riadku:

$sql = mysql_query("INSERT INTO users WHERE (user,email,password) VALUES ($user,$email,$password)");


...máte nejaké nápady ???
Luko
Profil *
...pretože sa nesplní táto podmienka a vypíše error o zlyhaní registrácie:

if($sql){
                    echo "<meta http-equiv=\"refresh\" content=\"5;URL=index.php\"><h3>Ďakujeme za registráciu. Na váš e-mail bola odoslaná správa s vašimi registračnými údajmi.</h3>";
                }else{
                    $error = 1;
                    $warning .= "<h2>Registrácia zlyhala, kontaktujte administrátora.</h2>";
                }
kvoky
Profil
$sql = mysql_query("INSERT INTO users (user,email,password) VALUES ($user,$email,$password)") or die (mysql_error());


je správně.
Luko
Profil *
kvoky: ďakujem ti za pomoc, už to pracuje tak ako má. ;) ...chyba bola presne v tom riadku.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: