Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]scrypt logowania IE vs FF i OPERA, nie wchodzi do petli, blad przekazania formularza, ale jaki?
Ciubas
post
Post #1





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 14.09.2003
Skąd: K-ce

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


plik panel.php:

  1. <?php
  2. if ($_POST['logowanie']!=='loguj' || $_POST['logowanie']=='loguj'){$_SESSION['haslo']=$_POST['haslo'];};
  3. $pas='test';
  4. if ($_GET['edycja']==""){$_GET['edycja']='strgl';};
  5. $edycja = $_GET['edycja'] . '.txt';
  6. if ($_SESSION['haslo']!==$pas || $_SESSION['haslo']==$pas){
  7. ?>
  8. <html>
  9. <head>
  10. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2" />
  11. </head>
  12. <body>
  13. <?php
  14.  
  15. if ($_POST['edytor_poszedl'] == "Zapisz zmiany") {
  16. $_POST['strona']=ereg_replace("","",$_POST['strona']);
  17. file_put_contents($edycja,$_POST['strona']);
  18. }
  19.  
  20. include("spaw2/spaw.inc.php"); 
  21. $content = file_get_contents($edycja);
  22. $spaw = new SpawEditor("strona", $content); 
  23. ?>
  24. <form class="" action="panel.php?edycja=<?php echo $_GET['edycja'];?>" method="POST">
  25.  
  26. <?php 
  27. $spaw->show(); 
  28. ?>
  29. <input type="submit" name="edytor_poszedl" value="Zapisz zmiany">
  30. </form>
  31. <br/>
  32. edytuj: <a href="panel.php?edycja=strgl"> strona główna </a> <a href="panel.php?edycja=cennik"> cennik </a>
  33. <?php 
  34. }
  35. else
  36. { ?>
  37. <form class="" action="panel.php" method="POST">
  38. <input type="password" name="haslo">
  39. <input type="submit" name="logowanie" value="loguj"> 
  40. </form>
  41. <?php 
  42. };
  43. ?>
  44.  
  45. </body>
  46. </html>


problem:
po przejsciu na inna zakladke tzn edycje inne pliku linkiem: <a href="panel.php?edycja=cennik"> cennik
zmienna $_SESSION['haslo'] jest pusta, zero. jak zmienialem ten scrypt to w ogole albo IE albo FF wraz z OPERA sie nie chcialy logowac i tak na zmiane.

w tej chwili nie pyta nawet o logowanie, wchodzi od razu tak jak byl zalogowany mimo ze post i session sa puste, juz nic nie rozumiem:/

plik w ktorym to jest to panel.php - ten sam gdzie inda wszystkie formy

blad moim zdaniem tkwi tutaj:

$_POST['logowanie']!=='loguj' || $_POST['logowanie']=='loguj' gdy jest bez !== nie dziala, gdy jest == dziala tylko na IE lub w ogole:/


-------------------------
tak chyba jest lepiej
te kawałki html'a nie będą przeszkadzały
większość kodu to PHP więc całość należało
umieścić w BBCode [ php ]
~Cienki1980

bede juz pamietac, dziekuje!
~ciubas


Ten post edytował Ciubas 22.03.2007, 16:30:59
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
MacPain
post
Post #2





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 22.09.2006

Ostrzeżenie: (10%)
X----


Masz w nastepnym pliku takie cos:
  1. <?php session_start(); ?>
Go to the top of the page
+Quote Post
recces
post
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 11.02.2004
Skąd: Torun

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


Wklej takze plik logowania (w ktorym ustawiasz zmienne sesji).
Jesli chodzi o nielogowanie sie- wyczysc sesje lub przynajmniej usun cookies sesji z przegladarki.
Po tych paru linijkach kodu nie jestem wstanie znalesc twojego bledu z sesjami.
Go to the top of the page
+Quote Post
Ciubas
post
Post #4





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 14.09.2003
Skąd: K-ce

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


MacPain- to ten sam plik

recces - to jest caly plik, reszta jest po ifie caly form logowania:)

dodatkowo jest tylko spaw, ale on nie ma z tym nic wspolnego

zmienilem wszystko tak:

  1. <?php
  2. if ($_POST['logowanie']=='loguj'){$_SESSION['haslo']=$_POST['haslo'];};
  3. $pas='test';
  4. if ($_GET['edycja']==""){$_GET['edycja']='strgl';};
  5. $edycja = $_GET['edycja'] . '.txt';
  6. if ($_SESSION['haslo']==$pas){
  7. ?>
  8. <html>
  9. <head>
  10. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2" />
  11. </head>
  12. <body>
  13.  
  14.  
  15. <?php
  16.  
  17. if ($_POST['edytor_poszedl'] == "Zapisz zmiany") {
  18. $_POST['strona']=ereg_replace("","",$_POST['strona']);
  19. file_put_contents($edycja,$_POST['strona']);
  20. }
  21.  
  22. include("spaw2/spaw.inc.php"); 
  23. $content = file_get_contents($edycja);
  24. $spaw = new SpawEditor("strona", $content); 
  25. ?>
  26. <form action="panel.php?edycja=<?php echo $_GET['edycja'];?>" method="POST">
  27. <?php 
  28. $spaw->show(); 
  29. ?>
  30. <input type="submit" name="edytor_poszedl" value="Zapisz zmiany">
  31. </form>
  32. <br/>
  33. edytuj: <a href="panel.php?edycja=strgl"> strona główna </a>  <a href="panel.php?edycja=cennik"> cennik </a>
  34. <?php 
  35. }
  36. else
  37. { ?>
  38.  
  39. <form class="" action="panel.php" method="POST">
  40. <input type="password" name="haslo">
  41. <input type="submit" name="logowanie" value="loguj"> 
  42. </form><br>
  43. <br>
  44.  
  45.  
  46.  
  47. <?php 
  48. };
  49. ?>
  50.  
  51.  
  52. </body>
  53. </html>


i teraz na FF i Opera dziala natomiast na IE nie:/

Ten post edytował Ciubas 22.03.2007, 14:40:38
Go to the top of the page
+Quote Post
Ciubas
post
Post #5





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 14.09.2003
Skąd: K-ce

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


dziekuje za zainteresowanie, prosze zobaczyc moj przed ostatni post, tam jest to poprawione a co tyczy sie // i \ to forum samo to dodaje dlatego nie lubie uzywac [ php ]

i jest to o czym pisales: if ($_POST['logowanie']=='loguj'){$_SESSION['haslo']=$_POST['haslo'];};

problemem jest to ze teraz IE w ogole nie wchdzi dalej, caly czas prosi o haslo...

Ten post edytował Ciubas 22.03.2007, 14:55:49
Go to the top of the page
+Quote Post
recces
post
Post #6





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 11.02.2004
Skąd: Torun

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


Soory- chcialem przeedytowac swoj post (nie zauwazylem twoich poprawek ) i go usunalem niechcacy ....
Sprawdz czy IE ma wlaczona obsluge cookies ....
Go to the top of the page
+Quote Post
Ciubas
post
Post #7





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 14.09.2003
Skąd: K-ce

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


oczywiscie ze ma:)
Go to the top of the page
+Quote Post
erix
post
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




  1. <?php
  2. if ($_POST['logowanie']=='loguj'){$_SESSION['haslo']=$_POST['haslo'];};
  3. $pas='test';
  4. ?>

Za każdym razem wysyłasz dane z formularza logowania?
Wydaje mi się, że nie więc dlaczego za każdym razem sprawdzasz, jakie hasło zostało wpisane?

Ten kawałek kodu działa tylko, gdy jest logowanie, ok. Ale ustaw
  1. <?php
  2. $_SESSION['pas'] = 'test';
  3. ?>

i sprawdzaj potem
  1. <?php
  2. //zamiast: if ($_SESSION['haslo']!==$pas || $_SESSION['haslo']==$pas){
  3. if(!empty($_SESSION['pas'])){
  4. ?>

Bazujesz się na zmiennej, która po prostu nie istnieje w dalszych skryptach ($pas - ustawiana jest tylko przy logowaniu, bo nie odwołujesz się poprzez formularz).

Mój przykład oczywiście był najprostszy, ale nie znaczy, że nie jest w miarę bezpieczny (wyłączam tu przypadki przechwycenia SID-a albo manipulację w plikach sesji).

Ten post edytował erix 22.03.2007, 15:11:27


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Ciubas
post
Post #9





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 14.09.2003
Skąd: K-ce

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


Cytat(erix @ 22.03.2007, 17:09:46 ) *
  1. <?php
  2. if ($_POST['logowanie']=='loguj'){$_SESSION['haslo']=$_POST['haslo'];};
  3. $pas='test';
  4. ?>

Za każdym razem wysyłasz dane z formularza logowania?
Wydaje mi się, że nie więc dlaczego za każdym razem sprawdzasz, jakie hasło zostało wpisane?

nie za kazdym razem, to tylko sprawdza czy wlasnie ktos sie loguje, czy juz byl zalogowany, jak byl to to omija, jak nie byl to sprawdza czy wpisal dobre haslo

Ten kawałek kodu działa tylko, gdy jest logowanie, ok. Ale ustaw
  1. <?php
  2. $_SESSION['pas'] = 'test';
  3. ?>

i sprawdzaj potem
  1. <?php
  2. //zamiast: if ($_SESSION['haslo']!==$pas || $_SESSION['haslo']==$pas){
  3. if(!empty($_SESSION['pas'])){
  4. ?>

Bazujesz się na zmiennej, która po prostu nie istnieje w dalszych skryptach ($pas - ustawiana jest tylko przy logowaniu, bo nie odwołujesz się poprzez formularz logowania).

wcale nie, tej if konczy sie znacznie wczesniej, w tej samej linijce, ten pass zawsze jest taki sam

Mój przykład oczywiście był najprostszy, ale nie znaczy, że nie jest w miarę bezpieczny (wyłączam tu przypadki przechwycenia SID-a albo manipulację w plikach sesji).

to jest nieistotne, bo problem dotyczy czego innego, dlaczego IE nie wchodzi do if a FF i OPERA tak...


o co mi chodzi i co sie dzieje: http://ciubas.pl/panel.php haslo test

Ten post edytował Ciubas 22.03.2007, 15:28:51
Go to the top of the page
+Quote Post
erix
post
Post #10





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Ups, przepraszam - nie zauważyłem, że wszystko w jednej linijce wcisnąłeś...

Coś w ogóle zawiera tablica?
  1. <?php
  2. var_dump($_SESSION);
  3. ?>
?


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Ciubas
post
Post #11





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 14.09.2003
Skąd: K-ce

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


erix - niestety nie rozumiem pytania, jezeli chodzi czy cos wczesniej bylo do niej wrzucane to odp brzmi NIE, czy byla wywolywana wczesniej: tez nie;/

czy to nie jest wina tego forma do logowania?

moze ja poprostu cos ominalem:/

  1. <?php
  2. $pas='parodium';
  3. if ($_POST['haslo']==$pas){$_SESSION['haslo']=$_POST['haslo'];};
  4. if ($_GET['edycja']==""){$_GET['edycja']='strgl';};
  5. $edycja = $_GET['edycja'] . '.txt';
  6. if ($_SESSION['haslo']==$pas){
  7. ?>
  8. <html>
  9. <head>
  10. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2" />
  11. </head>
  12. <body>
  13.  
  14.  
  15. <?php
  16.  
  17. if ($_POST['edytor_poszedl'] == "Zapisz zmiany") {
  18. $_POST['strona']=ereg_replace("","",$_POST['strona']);
  19. file_put_contents($edycja,$_POST['strona']);
  20. }
  21.  
  22. include("spaw2/spaw.inc.php"); 
  23. $content = file_get_contents($edycja);
  24. $spaw = new SpawEditor("strona", $content); 
  25. ?>
  26. <form action="panel.php?edycja=<?php echo $_GET['edycja'];?>" method="POST">
  27. <?php 
  28. $spaw->show(); 
  29. ?>
  30. <input type="submit" name="edytor_poszedl" value="Zapisz zmiany">
  31. </form>
  32. <br/>
  33. edytuj: <a href="panel.php?edycja=strgl"> strona główna </a>  <a href="panel.php?edycja=cennik"> cennik </a>
  34. <?php 
  35. }
  36. else
  37. { ?>
  38.  
  39. <form class="" action="panel.php" method="POST">
  40. <input type="password" name="haslo" />
  41. <input type="submit" name="logowanie" value="loguj" /> 
  42. </form>
  43. <br/>
  44. <br/>
  45. nowe zabezpieczenia zostaly zaimplementowane, system dziala na wszystkich przegl
    adarkach.
  46.  
  47.  
  48. <?php 
  49. };
  50. ?>
  51.  
  52.  
  53. </body>
  54. </html>


nie wiem czemu gdy porownywalem $_POST['logowanie']=='loguj' to zawsze IE zwracal ze to jest nieprawda i nie wchodzil do if, gdy jest tak jak teraz to wszystko smiga super

musiala to byc wina z formularzem i przekazaniem var loguj zmiennej logowanie, jezeli ktos potrafi powiedziec czemu tak sie dzieje, bede bardzo wdzieczny!

Ten post edytował Ciubas 22.03.2007, 16:30:23
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: 20.08.2025 - 17:49