Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Jeszcze sesje
Forum PHP.pl > Forum > Przedszkole
sada
Witam!

mam problem:

strona logowania wywołana przez ścieżkę dostępu http://....... działa super bez zarzutu, a po rewrite wywala błędy jak niżej:

Warning: session_start() [function.session-start]: open(/tmp/sess_7dc51faa29feb866d2f9bf60ea1902b7, O_RDWR) failed: No such file or directory (2) in /logowanie.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /logowanie.php:2) in /logowanie.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /logowanie.php:2) in /logowanie.php on line 2

początek strony logowania wygląda tak:


Kod
<?php require_once('connections/aaa.php');if (!isset($_SESSION)){session_start();}
$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}


Fifi209
Może więcej kodu? Daj go w znaczniki php. Daj też .htaccess w takim razie.
sada
Kod
<?php require_once('connections/aaa.php');if (!isset($_SESSION)){session_start();}
$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}

if (isset($_POST['nick'])) {
  $loginUsername=$_POST['nick'];
  $password=$_POST['haslo'];
  $MM_fldUserAuthorization = "status";
  $MM_redirectLoginSuccess = "index.php";
  $MM_redirectLoginFailed = "logowanienieudane.php";
  $MM_redirecttoReferrer = true;
  mysql_select_db($database_aaa, $aaa);
      
  $LoginRS__query=sprintf("SELECT nick, haslo, status FROM nazwabazy WHERE nick='%s' AND haslo='%s'",
  get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $password : addslashes($password));
  
  $LoginRS = mysql_query($LoginRS__query, $aaa) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
    
    $loginStrGroup  = mysql_result($LoginRS,0,'status');
    
    //declare two session variables and assign them
    $_SESSION['MM_Username'] = $loginUsername;
    $_SESSION['MM_UserGroup'] = $loginStrGroup;          

    if (isset($_SESSION['PrevUrl']) && true) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];    
    }
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
}
?>


z htaccessa tylko to jako tako dotyczy problemu:

RewriteCond %{HTTP_HOST} ^www.nazwastrony.pl
RewriteRule ^(.*) http://nazwastrony.pl/$1 [R=301,L]
RewriteRule ^logowanie logowanie.php [L]
marcio
Kod
<?php require_once('connections/aaa.php');if (!isset($_SESSION)){session_start();}

Ty chyba kpisz albo dajesz session_start() na sam poczatek odrazu pod <?php i potem plik zapisujesz bez BOM w notepad++ masz taka opcje albo dajesz na poczatek i przez session_start() dajesz ob_start().

A dwa to chyba logiczne ze sesji nie ma skoro session_start() masz po warunku wiec zrob tak jak ci napisalem i bedzie hulac tongue.gif
sada
Zrobiłem tak:


Kod
<?php
ob_start();
?>
<?php require_once('connections/aaa.php');
session_start();
$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}

if (isset($_POST['nick'])) {
  $loginUsername=$_POST['nick'];
  $password=$_POST['haslo'];
  $MM_fldUserAuthorization = "status";
  $MM_redirectLoginSuccess = "index.php";
  $MM_redirectLoginFailed = "logowanienieudane.php";
  $MM_redirecttoReferrer = true;
  mysql_select_db($database_aaa, $aaa);
      
  $LoginRS__query=sprintf("SELECT nick, haslo, status FROM karaoke_users5 WHERE nick='%s' AND haslo='%s'",
  get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $password : addslashes($password));
  
  $LoginRS = mysql_query($LoginRS__query, $aaa) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
    
    $loginStrGroup  = mysql_result($LoginRS,0,'status');
    
    //declare two session variables and assign them
    $_SESSION['MM_Username'] = $loginUsername;
    $_SESSION['MM_UserGroup'] = $loginStrGroup;          

    if (isset($_SESSION['PrevUrl']) && true) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];    
    }
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
}
?>


już loguje chociaż jest jeszcze ostrzeżenie:
Wprawdzie można wyłączyć raportowanie błędów , ale może coś jeszcze nie tak?


Warning: session_start() [function.session-start]: open(/tmp/sess_63df652c1ad354e47adf3c3c36c7937a, O_RDWR) failed: No such file or directory (2) in /logowanie.php on line 5
Fifi209
Cytat(sada @ 9.06.2009, 16:19:43 ) *
już loguje chociaż jest jeszcze ostrzeżenie:
Wprawdzie można wyłączyć raportowanie błędów , ale może coś jeszcze nie tak?


Warning: session_start() [function.session-start]: open(/tmp/sess_63df652c1ad354e47adf3c3c36c7937a, O_RDWR) failed: No such file or directory (2) in /logowanie.php on line 5



A czytać potrafisz ? Nie ma takiego pliku/lokalizacji.

@edit
Tak mi się w oczy rzuciło, dodaj na końcu(skryptu) ob_end_flush" title="Zobacz w manualu PHP" target="_manual
sada
no i najważniejsze dlaczego
-wywołując stronę bezpośrednio np Dreamveawerem brak błędów,
-przechodzęc na stronę z innej strony z rewritem są błędy
-przechodząc na stronę z innej strony ale adresując bezwzględnie http://home.pl/../..././.....;/logowanie.php nie ma błędów?

ob_end_flush();

jest po html-u nie podawałem go


to , że nie ma pliku widzę ale jakiego i dlaczego raz jest a raz nie ma?
Fifi209
Jak dla mnie to ten plik to dane sesji - jeżeli nie jest utworzona to nie istnieje.
sada
błąd jest w lini 5 a tam jest tylko session_start().
Brak jakiegoś pliku lub katalogu ale jakiego?

prawdopodobnie ścieżka dostępu do plików sesji jest niewidoczna , może trzeba ją jakoś określić w ht_accessie?

NIe wiem ,na razie burza w mózgu, a liczę na burzę mózgów.
marcio
  1. <?php
  2. require_once('connections/aaa.php');
  3. $loginFormAction = $_SERVER['PHP_SELF'];
  4. if (isset($_GET['accesscheck'])) {
  5.  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
  6. }
  7.  
  8. if (isset($_POST['nick'])) {
  9.  $loginUsername=$_POST['nick'];
  10.  $password=$_POST['haslo'];
  11.  $MM_fldUserAuthorization = "status";
  12.  $MM_redirectLoginSuccess = "index.php";
  13.  $MM_redirectLoginFailed = "logowanienieudane.php";
  14.  $MM_redirecttoReferrer = true;
  15.  mysql_select_db($database_aaa, $aaa);
  16.      
  17.  $LoginRS__query=sprintf("SELECT nick, haslo, status FROM karaoke_users5 WHERE nick='%s' AND haslo='%s'",
  18.  get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $password :   addslashes($password));
  19.  
  20.  $LoginRS = mysql_query($LoginRS__query, $aaa) or die(mysql_error());
  21.  $loginFoundUser = mysql_num_rows($LoginRS);
  22.  if ($loginFoundUser) {
  23.    
  24.    $loginStrGroup  = mysql_result($LoginRS,0,'status');
  25.    
  26.    //declare two session variables and assign them
  27.    $_SESSION['MM_Username'] = $loginUsername;
  28.    $_SESSION['MM_UserGroup'] = $loginStrGroup;          
  29.  
  30.    if (isset($_SESSION['PrevUrl']) && true) {
  31.      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];    
  32.    }
  33.    header("Location: " . $MM_redirectLoginSuccess );
  34.  }
  35.  else {
  36.    header("Location: ". $MM_redirectLoginFailed );
  37.  }
  38. }
  39. ?>

Zapisz bez BOM'a u musi dzialac.

Kodu nie sprawdzalem i mozliwe ze blad jest gdzies indziej ale czasu zbytnio nie mam.
sada
niestety zapisałem bez BOM i jest jak było
marcio
A czy twoj katalog /tmp/ ma prawa zapisu i odczytu czyli 766/777??
sada
Jeśli chodzi ci o katalog na serwerze to nie mam do niego dostępu.
Ale chyba ma 777 bo bez rewrite działa , i teraz po zmianie też działa czyli strona loguje , ale nie podoba mi się to ostrzeżenie.
marcio
to skoro dziala to zamiast se zastanwiac czemu jest error kodz dalej i zrob 2 rzeczy by nie bylo error'u:
ob_start() moze jednak jest cos z wysylaniem sesji jesli nie pomoze to:
error_reporting(0)

I tyle nie zawsze warto tracic 2 dni na usuniecie jednego error'a skoro wszystko dzialal jak powinno.
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.