Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL][SOLVED][logowanie - problem
carck3r
post
Post #1





Grupa: Zarejestrowani
Postów: 40
Pomógł: 2
Dołączył: 9.11.2008

Ostrzeżenie: (0%)
-----


Witam
Mam skrypt logowania połączony z bazą danych MySQL. Po wpisaniu odpowiednich danych cały czas pisze, że jestem niezalogowany ("Użyszkodnik niezalogowany"). Co z tym fantem zrobić?
  1. <?php
  2.  
  3. if(isset($userID) && isset($userPASS)){ // Jeżeli użytkownik podjął próbę zalogowania
  4.    $userID = $_POST[&apos;userID&apos;];
  5.    $userPASS = $_POST[&apos;userPASS&apos;];
  6.  
  7.    // łączenie z bazą danych MySQL
  8.    $dbConnect = new mysqli (&apos;localhost&apos;,&apos;root&apos;,&apos;xxxxx&apos;,&apos;users&apos;);
  9.    if(mysqli_connect_errno()){
  10.        echo &apos;Po&#322;ączenie z bazą danych nie powiodło się.&apos;;
  11.        exit;
  12.    }
  13.  
  14.    //zapytanie
  15.    $query = &apos;SELECT * FROM reg_users &apos;
  16.                 .&#092;"WHERE userLOGIN=&apos;$userID&apos;\"
  17.                 .&#092;"and userPASS=&apos;$userPASS&apos;\";
  18.  
  19.    // wykonanie zapytania
  20.    $result = $dbConnect->query($query);
  21.    if($result->num_rows > 0){ // jeżeli dane są w bazie
  22.        $_SESSION[&apos;prawid_uzyt&apos;] = $userID;
  23.    }
  24.    // koniec połączenia z bazą danych
  25.    $dbConnect->close();
  26. }
  27. ?>



Strona główna

  1. <?php
  2. if(isset($_SESSION[&apos;prawid_uzyt&apos;])){
  3.        echo &apos;Logowanie zako&#324;czone sukcesem.
  4. &apos;;
  5.        echo &apos;Twój login to: &apos;.$_SESSION[&apos;prawid_uzyt&apos;];
  6.        echo &apos;[url="http://%5C%22wyloguj.php"]Wyloguj si&#281;[/url]
  7. &#092;"&apos;;
  8.    }
  9.  
  10.    else
  11.    {
  12.        if(isset($userID)){
  13.            echo &apos;Zalogowanie nieudane.&apos;;
  14.        } else {
  15.            echo &apos;U&#380;yszkodnik niezalogowany.&apos;;
  16.        }
  17.  
  18.        // Tworzenie formularza, gdy użyszkodnik jest niezalogowany
  19.        ?>


Login

Hasło

Ten post edytował erix 19.02.2009, 19:29:13
Powód edycji: [erix] bbcode
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




a co to ma do obiektowki? Przenosze.

No i sprawdzaj czy przypadkiem nei masz bledow w zapytaniach, bo masz...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
carck3r
post
Post #3





Grupa: Zarejestrowani
Postów: 40
Pomógł: 2
Dołączył: 9.11.2008

Ostrzeżenie: (0%)
-----


  1. <?php
  2. //zapytanie
  3.    $query = 'SELECT * FROM reg_users '
  4.                 ."WHERE userLOGIN='$userLOGIN'"
  5.                 ."and userPASS='$userPASS'";
  6. ?>

Poprawiłem, jednak cały czas nie działa.
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




dalej masz blad zapytania.
No weź wyswietl sobie to zapytanie jak wyglada po wygenerowaniu, wyswietl sobie blad jaki konkretnie dostajesz to moze dojdziesz. No musisz sam radzic sobie z tak banalnymi rzeczami

edit: sorki, myslalem ze taka konstrukcja : where cos='cos'AND
bez spacji przed AND da nam blad zapytania. Ale sprawdzilem teraz u siebie i nie dalo bledu.

Tak czy siak wyswietl sobie to zapytanie, wstaw do PMA i zobacz czy dostaniesz jakies wyniki


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
carck3r
post
Post #5





Grupa: Zarejestrowani
Postów: 40
Pomógł: 2
Dołączył: 9.11.2008

Ostrzeżenie: (0%)
-----


  1. <?php
  2. SELECT *
  3. FROM reg_users
  4. WHERE userLOGIN = 'rootek'
  5. AND userPASS = 'tajne'[/code]
  6. ?>

W PMA wyświetliło:
Kod
2      rootek      tajne

A jak wpisze na stronę, to już nic się nie dzieje.

Może w pozostałeś części kodu jest coś nie tak?

Ten post edytował carck3r 19.02.2009, 09:52:30
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




1) A sprawdzales czy weszlo ci do tej linii:
$_SESSION['prawid_uzyt'] = $userID;
?
Daj tam w tym ifie jakies echo

2) Moze sesji ci nie tworzy bo lecą jakies naglowki
Daj to :
http://nospor.pl/php-faq-n29.html#faq-2
na samym poczatku, to zobaczysz bledy jesli jakies są


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
carck3r
post
Post #7





Grupa: Zarejestrowani
Postów: 40
Pomógł: 2
Dołączył: 9.11.2008

Ostrzeżenie: (0%)
-----


1) Wstawiłem echo:
  1. <?php
  2. // wykonanie zapytania
  3.    $result = $dbConnect->query($query);
  4.    if($result->num_rows > 0){ // jeżeli dane są w bazie
  5.        $_SESSION['prawid_uzyt'] = $userID;
  6.        echo "asdasdasd";
  7.    }
  8. ?>

Po odświeżeniu strony i wpisaniu prawidłowych danych napis 'asdasdasd' nie wyświetla się, więc jest coś nie tak smile.gif. Tylko co?

2) Wstawiłem to na początek skryptu:
  1. <?php
  2. ini_set('display_errors','1');
  3. ?>

Ale po odświeżeniu strony nie wyświetla się żaden error.

A sesja działa:
Kod
Name    PHPSESSID
Value    4919c750392232ccd10f71bcdd69e5de
Host    localhost
Path    /
Secure    No
Expires    At End Of Session


Ten post edytował carck3r 19.02.2009, 10:01:57
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




hihi:
if(isset($userID) && isset($userPASS)){ // Jeżeli użytkownik podjął próbę zalogowania
$userID = $_POST['userID'];
$userPASS = $_POST['userPASS'];

Najpierw sprawdzasz czy zmienna jest ustawiona, a dopiero potem ją ustawiasz winksmiley.jpg

ps: choc z drugiej strony do echo $query ci doszlo... magic... or register_globals winksmiley.jpg

wyswetl sobie jeszcze ewentualnie blad zapytania bo moze jednak cos jest nie tak: blad polaczenia bazy lub inne


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
carck3r
post
Post #9





Grupa: Zarejestrowani
Postów: 40
Pomógł: 2
Dołączył: 9.11.2008

Ostrzeżenie: (0%)
-----


biggrin.gif Działa! Dzięki.

BTW: Wyświetla mi błędy:
Kod
Notice: Undefined index: userLOGIN in /var/www/logowanie.php on line 7

Notice: Undefined index: userPASS in /var/www/logowanie.php on line 8

Ale loguje się prawidłowo.

Dam cały kod:
  1. <?php
  2. ini_set('display_errors','1');
  3.  
  4.  
  5. $userLOGIN = $_POST['userLOGIN'];
  6. $userPASS = $_POST['userPASS'];
  7. if(isset($userLOGIN) && isset($userPASS)){ // Jeżeli użytkownik podjął próbę zalogowania
  8.    // łączenie z bazą danych MySQL
  9.    $dbConnect = new mysqli ('localhost','root','2w2w2w','users');
  10.    if(mysqli_connect_errno()){
  11.        echo 'Połączenie z bazą danych nie powiodło się.';
  12.        exit;
  13.    }
  14.  
  15.    //zapytanie
  16.    $query = 'SELECT * FROM reg_users '
  17.                 ." WHERE userLOGIN='$userLOGIN'"
  18.                 ." and userPASS='$userPASS'";
  19.  
  20.    // wykonanie zapytania
  21.    $result = $dbConnect->query($query);
  22.    if($result->num_rows > 0){ // jeżeli dane są w bazie
  23.        $_SESSION['prawid_uzyt'] = $userLOGIN;
  24.        echo "asdasdasd";
  25.    }
  26.    // koniec połączenia z bazą danych
  27.    $dbConnect->close();
  28. }
  29. ?>
  30. <html>
  31.    <body>
  32.    <h1>Strona główna</h1>
  33.    <?
  34.    if(isset($_SESSION['prawid_uzyt'])){
  35.        echo 'Logowanie zakończone sukcesem.<br />';
  36.        echo 'Twój login to: '.$_SESSION['prawid_uzyt'];
  37.        echo '<a href="wyloguj.php>Wyloguj się</a><br />"';
  38.    }
  39.  
  40.    else
  41.    {
  42.        if(isset($userID)){
  43.            echo 'Zalogowanie nieudane.';
  44.        } else {
  45.            echo 'Użyszkodnik niezalogowany.';
  46.        }
  47.  
  48.        // Tworzenie formularza, gdy użyszkodnik jest niezalogowany
  49.        ?>
  50.        <form action="logowanie.php" method="post">
  51.            <table>
  52.                <tr>
  53.                    <td>Login <br />
  54.                    <input type="text" name="userLOGIN" /></td>
  55.                </tr>
  56.                <tr>
  57.                    <td>Hasło <br />
  58.                    <input type="password" name="userPASS" /></td>
  59.                </tr>
  60.                <tr>
  61.                    <td><input type="submit" value="Zaloguj się" /></td>
  62.                </tr>
  63.            </table>
  64.        </form>
  65.        <?
  66.    }
  67.    ?>
  68.    <br />
  69.    <a href = "tylko_czlonkowie.php">Cześć członkowska</a>
  70.    </body>
  71. </html>


Ten post edytował carck3r 19.02.2009, 10:08:27
Go to the top of the page
+Quote Post
Chrom
post
Post #10





Grupa: Zarejestrowani
Postów: 240
Pomógł: 17
Dołączył: 28.12.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


definiujesz zmienne $userLOGIN = $_POST['userLOGIN']; i $userPASS = $_POST['userPASS']; sprawdź najpierw czy wysyłasz formularz
Go to the top of the page
+Quote Post
carck3r
post
Post #11





Grupa: Zarejestrowani
Postów: 40
Pomógł: 2
Dołączył: 9.11.2008

Ostrzeżenie: (0%)
-----


Cytat(Chrom @ 19.02.2009, 10:15:44 ) *
definiujesz zmienne $userLOGIN = $_POST['userLOGIN']; i $userPASS = $_POST['userPASS']; sprawdź najpierw czy wysyłasz formularz


Ok, zrobiłem tak i jest dobrze:
  1. <?php
  2. if(isset($_POST['userLOGIN']) && isset($_POST['userPASS'])){ // Jeżeli użytkownik podjął próbę zalogowania
  3. $userLOGIN = $_POST['userLOGIN'];
  4. $userPASS = $_POST['userPASS'];
  5. ?>


Mam jeszcze jedno pytanie. Zrobiłem stronę wyloguj.php, a jej kod to po prostu:
  1. <?php
  2. $_SESSION = array();
  3. ?>
  4. <a href="logowanie.php">logowanie</a>

Jednak po wejściu na tą stronę zmienna sesji cały czas istnieje, a powinna się usunąć. Dlaczego tak jest?
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




no a gdzie session_start() ?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Chrom
post
Post #13





Grupa: Zarejestrowani
Postów: 240
Pomógł: 17
Dołączył: 28.12.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


raczej
  1. <?php
  2. if(isset($_POST['submit']))
  3. ?>
i używałbym empty sprawdza od razu czy wyrażenie przesłane nie jest puste

Ten post edytował Chrom 19.02.2009, 10:26:50
Go to the top of the page
+Quote Post
nospor
post
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@Chrom przeciez nie ma takiego pola.
Pozatym dzieki temu sprawdza czy ma pola, ktore chce miec


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Chrom
post
Post #15





Grupa: Zarejestrowani
Postów: 240
Pomógł: 17
Dołączył: 28.12.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


racja name ma inne
Go to the top of the page
+Quote Post
carck3r
post
Post #16





Grupa: Zarejestrowani
Postów: 40
Pomógł: 2
Dołączył: 9.11.2008

Ostrzeżenie: (0%)
-----


Dobra, dzięki za pomoc. Wszystko działa jak należy.
Go to the top of the page
+Quote Post
nospor
post
Post #17





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




a wytlumacz mi jeszcze jakim cudem uzyskales to zapytanie:
SELECT *
FROM reg_users
WHERE userLOGIN = 'rootek'
AND userPASS = 'tajne'

ktore wstawiles do PMA, skoro nie dochodzil ci wogole do momentu wykonywania zapytania? Prosilem przeciez,, byś wyswietlil wygenerowane zapytanie, a ty chyba z palca je sobie do PMA wpisales...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 23:11