Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: $_SESSION i $_POST
Forum PHP.pl > Forum > Przedszkole
Sethergal
Mam pewien problem. Tworze formularz i przesylam dane przez $_POST do $_SESSION. Ale mam dostep tylko do pierwszej strony jakbym wogole nie uzywal $_SESSION. Wiem, ze robie gdzies blad (bledy) w kodzie, ale nie wiem gdzie sad.gif

Oto kod

INDEX.php
Kod
<?
session_name('sid');
session_start();
session_register($user);
session_register($passw);
?>
...
<?
if(file_exists("login.php"))
{
    include("login.php");
}
?>


LOGIN.php
Kod
<?
session_name('sid');
session_start();

print "<p>";
$form="
<form action=\"login.php\" method=\"POST\">
<input type=\"hidden\" name=\"wyswietlony\" value=\"y\">
login<br>
<input class=edit type=\"text\" name=\"name\" size=\"15\" maxlength=\"25\" value=\"\"><br>
password<br>
<input class=edit type=\"password\" name=\"haslo\" size=\"15\" maxlength=\"25\" value=\"\"><br>
<input class=button type=\"submit\" value=\"Login\">
</form>";
$login=$_POST['name'];$password=$_POST['haslo'];
$_SESSION['user']=$_POST['name'];$_SESSION['passw']=$_POST['haslo'];

if($_POST['wyswietlony'] != "y")
{
print "$form";
print "</p>";

}
else
{
//czy istnieje plik
if(file_exists("loginy.txt"))
{

   $dane =fopen("loginy.txt","r");
   while (!feof($dane))
   {
     //wczytuj wiersze
     $event= fgets($dane,4096);
     //podziel informacje na elementy tablicy
     $dane_adm = explode("|", $event);
    

     if(($login==$dane_adm[0])&&($dane_adm[0]!=""))
     {
      if(($password==$dane_adm[1])&&($dane_adm[1]!=""))
      {$name=$dane_adm[2];
      if(file_exists("admin.php")){include("admin.php");}else{print "chwilowo nieczynne :(";}}
      else{print "złe hasło!";}
     }
     else
     {print"nieprawidłowy login!";}
    
    }
fclose($dane);

} else {print " zły login";}
}
?>

dane_adm - w pliku mam 3 dane: login, haslo i opis

ADMIN.php
Kod
<?
session_name('sid');
session_start();
?>
...
<?
print"<center><h2>Witaj $name</h2></center><br>";

include ("menu.php");
print"<TABLE RULES=none valign=top cellSpacing=0 cellPadding=8 align=center border=1 width=96%><tr><td>";
//-------------SPRAWDZENIE ODNO¦NIKÓW-------------
$strona=$_GET['id'];

if(isset($strona))
{
    $strona = str_replace("http://","NONE",$strona);
    $dlugosc = strlen($strona.".php");
    if($dlugosc<=16){
  if(file_exists($strona.".php"))
{
//----------------------TRE¦Ć------------------------------
  include($strona.".php");
//------------------------------------------------------------
}
else{
print"<br><br><br><br><br><center>Strona w trakcie budowy.<br><br>";
}}
}
print "</td></tr></table><br></p>";
?>


MENU.php
Kod
<?
session_name('sid');
session_start();

print"
<A href=\"login.php?id=010605_t03\">01062005</A><BR>


Po wcisnieciu <a> kaze mi sie ponownie zalogowac, i oczywiscie przechodzi do pusta.php, bo tak ma po login.
ennics
sprawdz czy masz włączone register_globals
temat przewijał się na forum

btw: używając $_SESSION['passw'] nie musisz używać session_register($passw);
Guest
mam włączone register_globals

Cytat
używając $_SESSION['passw'] nie musisz używać session_register($passw);


wpisalem, zeby miec pewnosc, czy tu nie tkwi blad.
Sethergal
zmienilem kod do calkowitego minimum w jednym pliku i sprawdzam printami wartosci
Kod
<?
session_start();
session_register("user");
session_register("passw");
session_register("logged");
?>
...
<?
$form="
<form action="index.php" method="POST">
<input type="hidden" name="wyswietlony" value="y">
login<br>
<input class=edit type="text" name="name" size="15" maxlength="25" value=""><br>
password<br>
<input class=edit type="password" name="haslo" size="15" maxlength="25" value=""><br>
<input class=button type="submit" value="Login">
</form>";
$login=$_POST['name'];
$password=$_POST['haslo'];

if ($_POST["wyswietlony"]!= "y"){print "$form";}

if (!isset($logged)){
$logged=1;
$_SESSION["logged"] = $logged;
$user=$login;
$_SESSION["user"]=$user;
$passw=$password;
$_SESSION["passw"]=$passw;
}
else
{
print"login:".$login." password:".$password."n";
print "user:".$_SESSION["user"]." passw:".$_SESSION["passw"]." logged:".$_SESSION["logged"]."n";
print "user:".$user." passw:".$passw." logged:".$logged."n";
//zamiast czytania z pliku podaje od razu
if (($login=="12")&&($password=="23"))
{ print"<A href="index.php?id=010605_t03">01.06.2005</A><BR>"; }
}
?>


wyswietla $login i $password (prosto z $_POST) oraz $logged=1 (z sesji), ale nie widzi $user i passw (z sesji)

prosze o pomoc - gdzie jest blad
Sethergal
Znalazłem błąd. smile.gif

Oto kod, który się zmienił:
Kod
if ($_POST["wyswietlony"]!= "y"){if(!isset($_SESSION["logged"])){print "$form";}}

if ($_POST['wyswietlony']){
$logged=1;
$_SESSION["logged"] = $logged;
$user=$login;
$_SESSION["user"]=$user;
$passw=$password;
$_SESSION["passw"]=$passw;
}
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.