Wątek zablokowany 2013-08-06 14:58 przez dzek69.

Ciągle komunikat o złych danych logowania

0

Witam, zrobiłem formularz logowania, jak i rejestracji, rejestracja przebiega pomyślnie, tworzy konto, tworzy foldery na serwerze dla użytkownika z jego nazwą, ale podczas logowania, cały czas wywala mi błąd... Błąd, że nie podałem hasła, lub nazwy użytkownika, oto kod. Wywala to: 'cPrzepraszam, musisz podać login, oraz hasło, aby móc się zalogować.'

Cały dzień się z tym męczę i nie mam pojęcia, co jest nie tak...

<?php   
require_once('common/connectvars.php');

session_start();

$error_msg = "";

if(!isset($_SESSION['user_id']))
{
    if(isset($_POST['submit']))
    {
        $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

        $user_username = mysqli_real_escape_string($dbc, trim($_POST['username']));
        $user_password = mysqli_real_escape_string($dbc, trim($_POST['password']));

        if(!empty($user_username) && !empty($user_password))
        {
            $query = "SELECT user_id, username FROM user_account WHERE username = '$user_username' AND password = SHA('$user_password')";
            $data = mysqli_query($dbc, $query);

            if(mysqli_num_rows($data) == 1)
            {
                $row = mysqli_fetch_array($data);
                $_SESSION['user_id'] = $row['user_id'];
                $_SESSION['user_username'] = $row['user_username'];
                setcookie('user_id', $row['user_id'], time() + 3600);
                setcookie('user_username', $row['user_username'], time() + 3600);
                $home_url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . '/index.php';
                header('Location: ' . $home_url);
            }
            else 
            {
                $error_msg = 'cPrzepraszam, musisz podać email, oraz hasło, aby móc się zalogować.';
            }
        }
        else 
        {
            $error_msg = 'Przepraszam, musisz podać email, oraz hasło, aby móc się zalogować.';
        }
    }
}
?>

Tutaj jest formularz logowania

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
       <label for="username">Username:</label><br />
       <input type="text" id="username" name="username" placeholder="Who are you?" /><br />
       <label for="password">Password:</label><br />
       <input type="password" id="password" name="password" /><br />
       <input type="submit" value="Log In" name="submit" />
</form>

Tutaj formularz rejestracji

<?php
    require_once('common/connectvars.php');

    $dbconnection = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

    if(isset($_POST['submit']))
    {
        $username = mysqli_real_escape_string($dbconnection, trim($_POST['username']));
        $password = mysqli_real_escape_string($dbconnection, trim($_POST['password']));

        $query = "INSERT INTO user_account (username, password, join_date) VALUES " .
            "('$username', SHA('$password'), NOW())";

        $myNewFolderPathUsername = "profiles/" . $username;
        $myNewFolderPathGallery = "profiles/" . $username . "/gallery";
        $myNewFolderPathVideos = "profiles/" . $username . "/videos";

        if (mkdir($myNewFolderPathUsername, 0700) ) 
        {
            if(mkdir($myNewFolderPathGallery, 0700))
            {

            }
            else
            {
                echo 'Nie można było utworzyć katalogu dla galerii użytkownika';
            }
            if(mkdir($myNewFolderPathVideos, 0700))
            {

            }
            else
            {
                echo 'Nie można było utworzyć katalogu dla galerii użytkownika';
            }
        }
        else 
        {
            echo 'coś się pojebało stary';
        }

        mysqli_query($dbconnection, $query);
        mysqli_close($dbconnection);
        exit();
    }

    mysqli_close($dbconnection);
?>
<section id="signup_panel">
    <div id="">
        <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
            <label for="username">Username:</label>
            <input type="text" id="username" name="username" /><br />
            <label for="password">Password:</label>
            <input type="password" id="password" name="password" /><br />
            <label for="password2">Retype</label>
            <input type="password" id="password2" name="password2" />
            <input type="submit" value="Sign Up" name="submit" />
        </form>
    </div>
</section>
0

Sprawdziłeś, czy na pewno dane, które skrypt odbiera w $_POST["username"] oraz $_POST["password"] są poprawne?
Edit: btw, po co trim-ujesz hasło?
Edit2: może brakuje średnika pod koniec zapytania? Czasami PHP ma o to pretensje :P

0

Nie mam pojęcia jaki może być w tym błąd... Sprawdzam znaki itp. i niby jest wszystko dobrze, a nie jest... A cały dzień zmarnowany na szukanie pewnie jakiejś drobnostki. Używam trim na wszelki wypadek, aby jak ktoś walnie spację w haśle, to aby ją wysadziło.

0

Zadając pytania bądź dokładny. Dlaczego podajesz komunikat, który w kodzie NIE ISTNIEJE? Zaznacz go z tego posta, skopiuj, ctrl+f, wklej - jeden wynik.
Patrząc na kod - dane nie zgadzają się z żadnymi danymi z bazy (czy tu komunikat nie powinien brzmieć "błędne dane logowania"?). Zrób sobie dumpa zapytania gdy je wykonujesz w celach debugowania (var_dump($query)) i się przyjrzyj czy zapytanie generujesz takie jak oczekujesz - jeżeli nie, cofnij się kawałek w kodzie i zrób dumpa np. zmiennych z których budujesz zapytanie - aż odnajdziesz miejsce, które nie zachowuje się jak oczekujesz.

0

Przecież napisałem, przy którym wywala błąd " Wywala to: 'cPrzepraszam, musisz podać login, oraz hasło, aby móc się zalogować.' ", że hasło lub nazwa użytkownika nie zostały wpisane poprawnie. Jak NIE ISTNIEJE? Wpisałem komunikat na odwal, dodałem do niego "c", aby wiedzieć, że to komunikat przy porównaniu danych.

0

Mówię o Twojej dokładności. Przeczytaj moją wypowiedź całą. Coś o ctrl+f i te sprawy. A gdyby nie udało Ci się doczytać to masz screenshota: http://i.imgur.com/J09Wb30.jpg

Powiesz, że się czepiam. Nie. Za długo tu (i nie tylko tu) siedzę, żebym miał ignorować fakt, że pierwsze ktoś opisuje problem, potem zmienia kod, potem go wkleja.

Tak, wiem, że chodzi o tamto miejsce, dzięki temu "c" byłem w stanie to rozpoznać (żeby nie było, że czepiam się i nie interesuję się problemem) - podałem Ci też kroki, które powinny Ci pomóc w rozwiązaniu problemu. Zastosuj się do nich i podziel się wynikami :)

0

Mam bajzel i dlatego tutaj skopiowałem z tym, a tam było z tamtym tekstem. Dodałem i zrobiłem konto mietek/mietek, gdy wpisuję dane to wyskakuje mi:
string(97) "SELECT user_id, username FROM user_account WHERE username = 'mietek' AND password = SHA('mietek')" Nie wiem, czy o to chodziło, bo PHP prawie kompletnie nie czaję, aby nie było, że źle coś zrobiłem ;)

Wpisałem "var_dump($query);" poniżej zapytania.

0

Spróbuj dopisać średnik na końcu zapytania.

0

ale przecież w kodzie jest średnik, jest tam nawet na górze przecież, po query = jest średnik

0

Dodaj średnik na końcu zapytania:

//                                                                                                                         v
$query = "SELECT user_id, username FROM user_account WHERE username = '$user_username' AND password = SHA('$user_password');";
//                                                                                                                         ^

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