Witam, rozwijam swój skrypt edytora. Powoli idzie to do przodu, ale napotkałem problem jak dla mnie nie do przejścia. Otóż mam zrobione logowanie gdzie zapamiętuję login usera w sesji i po poprawnym zalogowaniu przekierowuję go header(“Location: usermang.php”);. W tymże pliku użytkownik ma do wyboru kilka opcji w tym zmianę hasła. I powstają schody. Teoretycznie uporałem się z wyświetleniem opcji dla jednego konkretnie zalogowanego użytkownika, ale za to po kliknięciu w link “zmień hasło” efekt pracy skryptu to pusta strona. Jeśli ktoś mógłby pomóc i przynajmniej naprowadzić lub podać przykład rozwiązania tego problemu to byłbym wdzięczny
Taka uwaga odnośnie bezpieczeństwa - nie przekazuj między skryptami nazwy użytkownika - przecież ją znasz i masz zapamiętaną w sesji - jeszcze ktoś zmieni sobie linka i przez ewentualny błąd w skrypcie będzie miał możliwość podejrzenia lub edycji danych innego użytkownika.
W pliku usermanag.php masz wywołanie skryptu usermanag.php (w linku), ale w kodzie zupełnie tego nie bierzesz pod uwagę.
Zapewne zamiast wywołania usermanag.php miałoby być sprawdz.php?
Poza tym nie widzę w kodzie włączenia sesji (session_start()) - jest automatycznie włączona w konfiguracji PHP?
No i jak napisał Pablo_Wawa upewnij się, że sesje są włączone, jeśli PHP automatycznie ich nie włącza (w domyślnej konfiguracji tego nie robi) musisz to zrobić w każdym skrypcie na samym początku wywołując session_start()
Proponuje poczytać więcej o MySQL Przeszukujesz całą tabelę by dopasować jednego użytkownika a jak tych użytkowników będzie milion?
Druga rzecz to, że nadałeś
readonly="readonly"
Nie znaczy, ze nikt tego nie będzie mógł zmodyfikować, mam nadzieję, że nie używasz tych elementów w update do bazy Trzecia rzecz używaj mysql_fetch_assoc czytelniejsze i wygodniejsze. Czwarta banalna w php cudzysłów " uruchamia coś w rodzaju wyrażeń regularnych by sprawdzić czy nie ma tam zmiennych itp. Zdecydowanie szybsze i zalecane jest używanie pojedynczych ciapek ’ nie musisz wtedy robić " w HTMLu Zanim zabierzesz się za zrobienie czegoś dużego, polecam poczytać o wzorcach projektowych od MVC zaczynając, o obiektach i na koniec o framworkach do php by nie wywarzać drzwi na nowo P.S. Twój błąd to:
Wciąż nie widzisz, gdzie masz błąd (pisałem Ci już o tym) - w linku do zmiany hasła:
Zmień hasło [/code]
masz wywołanie skryptu [b]sprawdz.php[/b], w którym pewnie masz coś źle.
Poza tym wydaje mi się, że źle użyłeś wstawienia wartości zmiennej (tablicy) w tekście - nie chce mi się teraz tego sprawdzać, ale wywołanie powinno chyba mieć postać:
[code]uzytkownik=${r[‘uzytkownik’]}
czyli nawiasy {} po znaku $. Poza tym widzę, że używasz zmiennych globalnych - a jak nie, to zapewne masz gdzieś pobranie przesyłanych danych
$akcja=$_GET[‘akcja’];
$edytuj_usera=$_GET[‘edytuj_usera’];
Sugeruję być sprawdził czy do skryptu zmieniającego dane (hasło) użytkownika poprawnie przekazujesz parametry - np tym kodem:
echo '
';
print_r($_GET);
echo '
'; [/code] Poza tym w pliku sprawdz.php są błędy - co chcesz uzyskać instrukcją
[code]$wynik = mysql_query(“SELECT * FROM $tbl_name”) or die(‘Bł±d zapytania’);
? Bo tu pobierasz do zmiennej $wynik wszystkie rekordy (wiersze) z danymi o użytkownikach (a nie tylko tego jednego!). Brakuje części
WHERE = $edytuj_usera
, zawężającej pobranie danych tylko dla tego jednego użytkownika.
Poza tym nie powinieneś nazwy użytkownika pobierać z wywołania (przez link), tylko ze zmiennej sesyjnej, bo tak jak teraz masz to ktoś może wpisać dowolnego usera i dostać się do panelu (profilu) np. admina.