![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 37 Pomógł: 0 Dołączył: 28.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam
![]() mam kod w pliku "glowna.php"
niby powinno działać, ale "$_POST['login']" jest w pliku "index.php". Da się jakoś zczytać ten "$_POST['login']" z "index.php" do "glowna.php", czy musze przerobić kod i wrzucić wszystko do "index.php" ![]() ![]() |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 896 Pomógł: 76 Dołączył: 15.11.2003 Skąd: Sosnowiec/Kraków Ostrzeżenie: (0%) ![]() ![]() |
Możesz przerobić kod i umieścić go w pliku index.php albo przekazać zmienną $_POST['login'] z index.php do glowna.php za pomocą sesji albo tablicy $_GET.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 37 Pomógł: 0 Dołączył: 28.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
a przy użyciu sesji jak to będzie?
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 896 Pomógł: 76 Dołączył: 15.11.2003 Skąd: Sosnowiec/Kraków Ostrzeżenie: (0%) ![]() ![]() |
W pliku index.php oraz glowna.php inicjujesz zmienną za pomocą session_start()" title="Zobacz w manualu PHP" target="_manual, w pliku index.php do tablicy sesyjnej $_SESSION dodajesz zmienną, którą chcesz przekazać:
Od teraz zmienna $_SESSION['login'] jest też dostępna w pliku glowna.php i w każdym innym, w którym zainicjujesz sesję. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 37 Pomógł: 0 Dołączył: 28.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
też tak myślałem, ale chyba coś źle robię bo w pliku "index.php" mam
Kod [/b]session_start(); session_register("zalogowany"); session_register("login"); if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0; mysql_connect("localhost", "root", "")or die("Nie można nawiązać połączenia z bazą"); mysql_select_db("user")or die("Wystąpił błąd podczas wybierania bazy danych"); jakiś tam kod if($_SESSION["zalogowany"]!=1){ if(!empty($_POST["login"]) && !empty($_POST["haslo"])){ if(mysql_num_rows(mysql_query("select * from user where user_login = '".htmlspecialchars($_POST["login"])."' AND user_haslo = '".htmlspecialchars($_POST["haslo"])."'"))) { $_SESSION["zalogowany"]=1; $_SESSION['login'] = $_POST['login']; } else $_SESSION["zalogowany"]=0; [b] a w "glowna.php" mam Kod session_start(); session_register("zalogowany"); [/b][b] session_register("login");[/b] [b] if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0; $_SESSION['login'] = $_POST['login']; mysql_connect("localhost", "root", "")or die("Nie można nawiązać połączenia z bazą"); mysql_select_db("user")or die("Wystąpił błąd podczas wybierania bazy danych"); [/b][b] i wyskakuje błąd: Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 3 in C:\Program Files\WebServ\httpd\serwis\glowna.php on line 28 Warning: fopen(user//temp.txt) [function.fopen]: failed to open stream: No such file or directory in C:\Program Files\WebServ\httpd\serwis\glowna.php on line 30 Warning: filesize() [function.filesize]: stat failed for user//temp.txt in C:\Program Files\WebServ\httpd\serwis\glowna.php on line 31 Warning: fclose(): supplied argument is not a valid stream resource in C:\Program Files\WebServ\httpd\serwis\glowna.php on line 32 Ten post edytował albercik1983 11.03.2009, 21:48:13 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 896 Pomógł: 76 Dołączył: 15.11.2003 Skąd: Sosnowiec/Kraków Ostrzeżenie: (0%) ![]() ![]() |
Przede wszystkim ta linijka:
Ma się znajdować tylko w pliku index.php, w pliku główna.php jej nie ma. W pliku index.php umieszczasz ją w tablicy $_SESSION, która 'przetrwa' przejście na inną podstronę i będzie dostępna. Zmień to i sprawdź. Używaj poprawnego bbcode (znaczniki php a nie code i niepogrubione bo ciężko się czyta). Wklejasz tylko wycinek pliku glowna.php a te błędy dotyczą linii 20 - 30 i wydają się niezbyt związane z istotą zagadnienia, o którym rozmawiamy. |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 221 Pomógł: 14 Dołączył: 11.03.2009 Skąd: Lubaczów Ostrzeżenie: (0%) ![]() ![]() |
a nie da sie tego zrobic za pomoca instrukcji include badz require
![]() "Warning: fopen(user//temp.txt) [function.fopen]: failed to open stream: No such file or directory in C:\Program Files\WebServ\httpd\serwis\glowna.php on line 30" jesli user to katalog to nie masz za duzo / ![]() Pozdrawiam |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 896 Pomógł: 76 Dołączył: 15.11.2003 Skąd: Sosnowiec/Kraków Ostrzeżenie: (0%) ![]() ![]() |
~InosU31 - teoretycznie można, ale proponuję się skupić na rozwiazaniu, które jest standardem. Include jest odpowiednikiem umieszczenia wszystkiego w 1 pliku - czasami to jest niemożliwe, najczęściej niepożądane.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 37 Pomógł: 0 Dołączył: 28.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
może dam całe:
glowna.php
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 896 Pomógł: 76 Dołączył: 15.11.2003 Skąd: Sosnowiec/Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. Wywal to session_register()
2. Wyrzuć session_destroy(); z pliku index.php bo sesja i wszystkie zmienne przestają istnieć po tym poleceniu. A przecież używasz potem zmiennych z tablicy $_SESSION. 3. W pliku glowna.php nie używaj już tablicy $_POST bo jej tam nie ma. Skoro w index.php zrobiłeś sobie zmienną $_SESSION['login'] to korzystaj z tego:
4. Słowo o wyświetlaniu php + html:
W przypadku takich dużych fragmentów tekstu naprawdę wygodniej wyjść z php a potem znowu wejść niż używać echo, nie rozumiem po co utrudniać sobie życie... |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 37 Pomógł: 0 Dołączył: 28.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
session_destroy() dałem, ponieważ był problem z wylogowaniem. (gdy wylogowałem się i wcisnąłem przycisk "wróć" byłem dalej zalogowany) i użyłem pliku "index.php" w linku do wylogowania. Dlatego robię "glowna.php", gdzie zczyta z "temp.txt" wpisaną wcześniej liczbą "1".
Zmieniłem w kodzie tak jak napisałeś i chyba zadziała, ale wyskoczył błąd Warning: file() expects parameter 1 to be string, resource given in C:\Program Files\WebServ\httpd\serwis\glowna.php on line 26 gdzie linia 26 to $temp = file($a, filesize($nazwa_pliku)); fragment wygląda tak
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 850 Pomógł: 120 Dołączył: 15.02.2007 Skąd: Łódź Ostrzeżenie: (10%) ![]() ![]() |
bo chyba powinieneś dać nazwę pliku do file?
Ten post edytował Lion_87 11.03.2009, 22:43:19 |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 896 Pomógł: 76 Dołączył: 15.11.2003 Skąd: Sosnowiec/Kraków Ostrzeżenie: (0%) ![]() ![]() |
Najpierw błąd.
Cytat Warning: file() expects parameter 1 to be string, resource given pierwszy parametr dla funkcji file() ma być łańcuchem znaków a podano coś innego Otwierasz manual, funkcja file()" title="Zobacz w manualu PHP" target="_manual i czytasz: Cytat array file ( string $nazwa_pliku [, int $flagi [, resource $kontekst ]] ) Więc linia
jest niepotrzebna. Takie oczywistości musisz interpretować sam albo daleko nie zajdziesz. Co do session_destroy - jeżeli kliniesz "wyloguj" to wtedy możesz sobie wykonać session_destroy() i mimo, że cofniesz się przeglądarką to i tak jesteś wylogowany. Można i temu zapobiec, poszukaj na forum. W tamtym miejscu nie możesz dać session destroy bo potrzebujesz jeszcze tej sesji i koniec. A tego: Cytat Dlatego robię "glowna.php", gdzie zczyta z "temp.txt" wpisaną wcześniej liczbą "1". nie rozumiem - ale źle to brzmi ![]() |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 37 Pomógł: 0 Dołączył: 28.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
zrobiłem tak
a co do session_destroy, to chodzi mi o to, że jak na jakiejś podstronie kliknę przycisk "wyloguj" i dam wstecz to dalej jestem zalogowany. Dlatego na podstronach oprócz sprawdzenia czy $_SESSION["zalogowany"]==1, zczytuję z pliku "temp.txt" linię, która zapisała się tam przy zalogowaniu (teraz zamiast "1" dałem "tak" ![]() ![]() |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 896 Pomógł: 76 Dołączył: 15.11.2003 Skąd: Sosnowiec/Kraków Ostrzeżenie: (0%) ![]() ![]() |
Sugeruję zrezygnowanie z takiego rozwiązania, niepotrzebnie komplikujesz.
Możesz w każdym pliku, który jest dostępny tylko dla zalogowanego sprawdzać na początku czy $_SESSION['zalogowany'] == 1 i jeżeli nie, za pomocą header() przekierować na stronę logowania. |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 37 Pomógł: 0 Dołączył: 28.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Już tak próbowałem, ale to nie rozwiązało problemu z przyciskiem "wstecz".
zauważyłem jednak, że kiedy kliknie się w link do tej samej strony (nie "odświerz"), to tak się nie dzieje. Mógł bym po logowaniu wyświetlić "przejdź na stronę główną" i link, ale takie coś mi się nie podoba ![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 11:08 |