Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]logowanie polegajace na sesji dziala na localhost lecz na serwerze prawdziwym nie dziala[/php], [php]logowanie polegajace na sesji dziala na localhost lecz na serwerz
uczaj21
post
Post #1





Grupa: Zarejestrowani
Postów: 115
Pomógł: 0
Dołączył: 30.06.2007

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


Witam serdecznie mam pewien problem zwiazany z systemem logowania sie dzialajacym na sesji.Problem tkwi w tym ze na localhoscie dziala ale na prawdziwym serwerze nie dziala kiedy wpisuje poprawne login i haslo to nie przekierowuje mnie do pliku zamowienia.php tylko powtarza caly czas formularz.Na localhost dziala na serwerze nie?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?.O to kod plik logowanie.php
  1. <?php
  2. if (isset($login) && isset($pass)){
  3. if ($login == "uczaj" && $pass == "test"){
  4. session_register("login");
  5. header("Location: zamowienia.php" . SID);
  6.  
  7. exit();
  8. } else
  9. $error = "<B>Błędny login lub hasło!</B><BR>";
  10. } else
  11. $error = false;
  12. ?>
  13.  
  14. <HTML>
  15. <HEAD>
  16. <TITLE>Logowanie</TITLE>
  17. </HEAD>
  18. <BODY>
  19. <?php
  20. echo $error ? $error : "";
  21. ?>
  22. <B>Podaj login i&nbsp;hasło</B>
  23. <FORM method="POST" action="<?php echo $PHP_SELF?>">
  24. Login: <INPUT type="text" name="login"><BR>
  25. Hasło: <INPUT type="password" name="pass"><BR>
  26. <INPUT type="submit" value="Zaloguj się">
  27. </FORM>
  28. </BODY>
  29. </HTML>

kod pliku zamowienia.php
  1. <?php
  2. echo "Witaj " . $_SESSION["login"];
  3. echo " < A href='logout.php?' . SID . '>";
  4. echo "[Wyloguj]</ A>";
  5. ?>
  6. <BR><B>Ściśle tajne dane.</B>
  7. </BODY>
  8. </HTML>
  9. <?php
  10. @$wp = fopen("za.txt", "r");
  11.  
  12. if (!$wp)
  13. {
  14. echo "<p><strong>Brak zamówień."
  15. ."Proszę spróbować później.</strong></p></body></html>";
  16.  
  17. }
  18.  
  19. while (!feof($wp))
  20. {
  21. $zamowienie = fgets($wp, 999);
  22. echo $zamowienie."<br>";
  23.  
  24. }
  25.  
  26. fclose($wp);
  27.  ?>
  28.  
  29. <!--/FOOTER-->

prosze o pomoc bo to jest jakies dziwne?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
kossa
post
Post #2





Grupa: Zarejestrowani
Postów: 1 165
Pomógł: 9
Dołączył: 9.04.2002
Skąd: Toruń

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


ustawienia php dotyczące register_globals == Off

nie odbieraj zmiennych tak:

Cytat
$login


a tak:

  1. <?php
  2. $_POST["login"]
  3.  
  4. więc tak:
  5.  
  6. (isset($_POST["login"]) itd...) //jeśli ślesz te dane w POST
  7.  
  8. //pomyśl też o werfikacji tych danych
  9.  
  10. ?>


dla zmiennych przesyłanych w URL masz tablicę $_GET dla sesji $_SESSION


to też

Cytat
session_register("login");


proponuję zmień na

  1. <?php
  2. $_SESSION["login"]=$_POST["login"];
  3. ?>


Łukasz

Ten post edytował kossa 16.08.2007, 01:51:29
Go to the top of the page
+Quote Post
uczaj21
post
Post #3





Grupa: Zarejestrowani
Postów: 115
Pomógł: 0
Dołączył: 30.06.2007

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


jak zmienic usatawienia register_globals == na on
Go to the top of the page
+Quote Post
piotrekkr
post
Post #4





Grupa: Zarejestrowani
Postów: 386
Pomógł: 25
Dołączył: 28.09.2005

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


wstawiaj sobie cos takiego na poczatku skryptu
  1. <?php
  2. $login = $_POST['login'];
  3. $pass = $_POST['pass'];
  4. ?>
to powinno przypisac tym zmiennym $pass i $login odpowiednie wartosci przekazane z formularza logowania. Chyba nie da sie za pomoca php zmienic dyrektywy register_globals. Trzeba to zrobic w pliku konfoguracyjnym php czy tam serwera (nie pamietam dokladnie). A jesli to jest hosting nie na localhoscie to zostaje poprosiuc tylko admina ale watpie zeby sie zgodzil bo to zagraza troche bezpieczenstwu o ile dobrze pamietam
Go to the top of the page
+Quote Post
barat
post
Post #5





Grupa: Zarejestrowani
Postów: 183
Pomógł: 0
Dołączył: 19.05.2007

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


Możesz też sobie napisać prostą funkcję:

  1. <?php
  2. foreach ($_GET as $key => $value) {
  3. ${$key} = $value;
  4. }
  5.  
  6. foreach ($_POST as $key => $value) {
  7. ${$key} = $value;
  8. }
  9. ?>


Lub by było bezpieczniej:

  1. <?php
  2. $expected = array('piwrwszy', 'drugi','trzeci');
  3.  
  4. foreach ($_GET as $key => $value) {
  5. if (in_array($key, $expected)) {
  6. ${$key} = $value;
  7. }
  8. }
  9. foreach ($_POST as $key => $value) {
  10. if (in_array($key, $expected)) {
  11. ${$key} = $value;
  12. }
  13. }
  14. ?>


gdzie

$expected = array('piwrwszy', 'drugi','trzeci');

To tablica, w której wymieniasz argumenty, których się spodziewasz (znacznie bezpieczniej) ...

Podałem przykłady dla $_POST i $_GET ... nic nie stoi na przeszkodzie, by używać ich osobno

Oczywiście takie coś ma sens przy większych formularzach, ponieważ gdy masz tylko 2-3 różne zmienne dużo łatwiej jest zrobić tak, jak proponuje piotrekkr

Ten post edytował barat 16.08.2007, 12:35:23
Go to the top of the page
+Quote Post
uczaj21
post
Post #6





Grupa: Zarejestrowani
Postów: 115
Pomógł: 0
Dołączył: 30.06.2007

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


dziekuje za pomo juz sobie pradzilem z tym problemem
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 14:32