Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]logowanie polegajace na sesji dziala na localhost lecz na serwerze prawdziwym nie dziala[/php]
Forum PHP.pl > Forum > Przedszkole
uczaj21
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?questionmark.gifquestionmark.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?questionmark.gif?
kossa
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
uczaj21
jak zmienic usatawienia register_globals == na on
piotrekkr
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
barat
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
uczaj21
dziekuje za pomo juz sobie pradzilem z tym problemem
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.