Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP & MySQL]Problem z logowaniem
Forum PHP.pl > Forum > Gotowe rozwiązania
MOniToR
Na swojej stronie chciałem umieścić skypt autorstwa noos-a "System logowania oparty o sesje i MySQL ". Jednak skypt mi nie działa , a dokładniej nie sprawdz mi loginu i hasła, rfazem z autorem skyptu prubowaliśmy odkryć czemu tak sie dzieje jednak nie udało se. Poniżej zamieszczem kod skyptu z nadzieją że ktos mi pomoże.
[php:1:bba90ddf43]
<?
include("header.tpl");

#LOGOWANIE by Noose
#W razie problemów noose@poczta.wp.pl
#albo GG: 1822588
#pozdrawiam

# Inicjujemy funkcje z ktorej bedziemy pózniej korzystac:)
function logowanie()
{
echo("<form method ="post">n
<br>n
&nbsp;&nbsp; User: <input type="text" name="login" style="height:15px;font-size:10px;width:80px; "><br>n
&nbsp;&nbsp; Pass: <input type="password" name="haslo" style="height:15px;font-size:10px;width:80px; "><br>n
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" name="submit" value="Zaloguj" size="6 " style="height:19px;font-size:10px; "><br>n
<br>
</form>n");
}
# i po funkcji

# w tym pliku są zmienne potrzebne do łaczenia się z baza danych

include("config.cfg"); #plik z info o bazie danych


if(!isset($submit)) # jeżeli nie zaznaczono submit, odpal logowanie
{
logowanie();
}
else # w innym przypadku....
{
$login=$_POST["login"];
$haslo=$_POST["haslo"];
$db=mysql_connect("$sql_host", "$sql_user", "$sql_pass") or die("Nie można się połączyć z serwerem"); # łaczenie się z bazą danych
mysql_select_db("$sql_base", $db) or die("Problem z łączeniem się z bazą danych "); # jeżeli występują problemy to przerywa skrypt
$sql="SELECT * FROM users WHERE user_login = '$login'" or die("Nie można załadowac danych z bazy"); ; # zapytanie do mysql o wyswietlenie komórki USER_NAME w której figuruje zmienna $login
$result=mysql_query($sql);
while($row = mysql_fetch_array($result))
{

$user_login= $row["user_login"]; # $zmienna_używana_w_skrypcie=$komórka["nazwa_komórki_ze_sql"];
$user_pass= $row["user_pass"]; # tutaj definiujemy komorki
$ban=$row["ban"];
if (($haslo != $user_pass) || ($login != $user_login)) # jeżeli hasło / login się nie zgadzają
{
echo("Zly login/pass"); # pokazuje "Zly login/pass" oraz logowanie (z wczesniej zadeklarowanej funkcji:)
logowanie();
} else { # w innym przypadku (tj. login i pass są prawdziwe)

session_register(login) or die("ERROR");
session_register(ban) or die("ERROR");

include_once("index.php");
print_r($_SESSION);
}


}
}

include("footer.tpl");
?>


[/php:1:bba90ddf43]
oraz w pliku header.tpl jest:
[php:1:bba90ddf43]
<?
session_name(pupunia) or die("ERROR");
session_start() or die("ERROR");
?>
[/php:1:bba90ddf43]
Według mnie problem jest taki ze [php:1:bba90ddf43]
else { # w innym przypadku (tj. login i pass są prawdziwe)

session_register(login) or die("ERROR");
session_register(ban) or die("ERROR");

include_once("index.php");
print_r($_SESSION);
}
[/php:1:bba90ddf43]
nie działa ( i jeszcze dodam że skypt według autora działał na jego stronie)
BzikOS
Nie przeglądałem całego kodu, ale to co mi się rzuciło w oczy... zamień:
[php:1:599b270044]<?php
session_register(login) or die("ERROR");
session_register(ban) or die("ERROR");
?>[/php:1:599b270044]

na
[php:1:599b270044]<?php
$_SESSION['login'] = $login;
$_SESSION['ban'] = $ban;
?>[/php:1:599b270044]
nobody
A nie lepiej w takim przypadku dac zapytanie do bazy:
[sql:1:87e2af3a8f]SELECT * FROM users WHERE user_login='login_z_formularza' AND user_pass='haslo_z_formularza'[/sql:1:87e2af3a8f]
i sprawdzic czy jest rezultat?
MOniToR
Dalej nie działa:( obojętnie jaki wpisze login i hasło to dzieje się to samo:( czyli znika mi formularz i nic sie nie dzieje:( dalej nie moge wejsc w chroniony dział.
//a w phpmyadmin jak dam SELECT *
FROM users
WHERE user_login='login_z_formularza' AND user_pass='haslo_z_formularza' to mi sie wysiwtla dobry login i haslo
BzikOS
A jak sprawdzasz w chronionym dziale, czy user jest zalogowany?
MOniToR
ja nie moge wejsc do tego dzialu bo mi pisze ze brak dostepu
kod zabezpiecajacy który jest w chronionym dziale
[php:1:5e91c08ae4]
<?

include ("header.tpl");
if (!isset($_SESSION["login"])) # sprawdza czy w sesji jest zaladowana zmienna login
{
echo(" <pre> Error 403 <br> Brak dostępu do zasobów </pre>");

include ("footer.tpl") ;
exit(); }

?>


[/php:1:5e91c08ae4]
BzikOS
Nie widzę nigdzie startowania sesji... (session_start()).
MOniToR
Cytat
oraz w pliku header.tpl jest:


<?
session_name(pupunia) or die("ERROR");
session_start() or die("ERROR");
?>
MOniToR
ale kit :/ odkryłem problem , wszystko sie dzieje przez serwer :/ sprawdziłem na lycosie i tam mi wszystko działa:/ a nie rozumiem bo normalnie serw na którym mam stronke jest płatny (ja mam załatwione konto po znajomości)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.