Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Logowanie
Forum PHP.pl > Forum > PHP
gallardo83
Witam wszystkich
Dlaczego jak sie loguję to formularz, który z założenia ma być dostępmy dopiero po zalogowaniu pojawia sie i owszem - ale dopiero jak sie zaloguje i odświerzę stronę.
Co może być przyczyną ?
Pozdrawiam i czekam na info
b_chmura
prawdopodobnie coś źle zrobiłeś

kurde daj jakiś kod skąd kto ma wiedzieć co Ty tam napisałeś
deirathe
Podejrzewam że za późno do kodu dostarczasz zmienna mówiącą że uzyszkodnik jest zalogowany, ale podzielam opinie kolegi wyżej daj kod, bo nikt tu wróżką nie jest i kuli też nie mamy...
Blodo
gallardo83: Cos z cookiesami na 99%. Wez poprostu po logowaniu strzel redirecta za pomoca header() i tyle.
gallardo83
Ok oto kody:
skrypt logowania:
CODE

<?php
$login_check = $_POST['login_check'];
$pass_check = $_POST['pass_check'];
$_SESSION['login']=$_POST['login_check'];
$_SESSION['password']=$_POST['pass_check'];
if (!file_exists("users/$login_check.dat")):
echo("Błędne dane");
elseif (file_exists("users/$login_check.dat")):
include("users/$login_check.dat");
if(($_SESSION['login'] == $login_check) && ($_SESSION['password'] == $pass_check)):
$_SESSION['rights'] = $rights;
print $_SESSION['rights'].'<br>';
echo ("witamy\n");
echo $_SESSION['login'];
echo("\nZalogowałeś si&#281!!");
else:
echo("niepoprawny login lub/i haslo");
endif;
endif;

?>

A oto skrypt formularza który ma byc dostępny po zalogowaniu:
CODE
<?php session_start();
if(isset($_SESSION['rights']) && $_SESSION['rights']=='user')
{
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Formularz HTML-owy</title>


</head>

<body>

<form action="index.php?page=formularzPHP" method="post" enctype="multipart/form-data" name="formularzHTML-owy" class="style1" id="formularzPHP">



<table bgcolor="#999999" width="791" border="0" align="center" cellpadding="2" cellspacing="0" id="1">
<tr>
<td colspan="4"></td>
</tr>
<tr>
<td colspan="4"><div align="center">
<h2>Zamawianie ł&oacute;żka </h2>
</div></td>
</tr>
<tr>
<td colspan="4"><hr size="2" color="#FFFFFF"/></td>
</tr>
<tr>
<td width="11%"><label>
<div align="left">Imie:</div>
</td>
<td width="40%" align="left"><input name="imie" type="text" size="35" />
</td>

...


a własciwie to chodzi mi o to aby w menu po lewo pokazał sie linik do formularza który wyświetli się po prawej stronie
A oto menu
CODE
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Menu</title>
<style type="text/css">
<!--
.style1 {font-size: 36}
-->
</style>
</head>

<body>


<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span class="style1"><a href="index.php?page=witam">Witam na mojej stronie</a></span></p>
<p align="left" class="style1"><a href="index.php?page=strona1">Strona 1</p>
<!-- <p align="left" class="style1"><a href="index.php?page=strona2">Strona 2 </p> -->

<?
if(isset($_SESSION['rights']) && $_SESSION['rights']=='admin')
print '<p align="left" class="style1"><a href="index.php?page=strona2">Admin </p>';
if(isset($_SESSION['rights']) && $_SESSION['rights']=='user')
print '<p align="left" class="style1"><a href="index.php?page=formularz">Formularz </p>';
?>

<?php
header("Location: http://stud.ics.p.lodz.pl/~avathav/pai/tmp/");
?>

</body>
</html>


i co pomożecie ?
Z góry Dziękuję
rzymek01
po pierwsze primo:
na moje to user zawsze będzie zalogowany, bo najpierw przypisujesz:
Kod
$login_check = $_POST['login_check'];
$pass_check = $_POST['pass_check'];
$_SESSION['login']=$_POST['login_check'];
$_SESSION['password']=$_POST['pass_check'];


a zaraz potem sprawdzasz:
Kod
if(($_SESSION['login'] == $login_check) && ($_SESSION['password'] == $pass_check))


tongue.gif

po drugie primo:
wypadałoby użyć session_start(); na początku 1 i 3 kodu, który podałeś (w 2 juz jest)

po trzecie primo:
trzymaj się jednej pisowni. Jak już piszesz if ...: endif; to rób tak wszystkie warunki. Używaj albo print, albo echo. Pisz albo <?, albo <?php :]
deirathe
A nie łatwiej i bezpieczniej Ci będzie z sql?
  1. <?php
  2. session_start();//rozpoczynamy sesje
  3. mysql_connect();//podajemy dane potrzebne do polaczenia sie z baza
  4. $user = mysql_real_escape_string($_POST['user']);
  5. $pwd = mysql_real_escape_string($_POST['pwd']);
  6. $query = "SELECT id FROM users WHERE user='".$user."' AND password='".$pwd."';";
  7. $valid = mysql_num_rows(mysql_query($query));
  8. if($valid) $_SESSION['valid'] = true;
  9.  
  10. if($_SESSION['valid']]){
  11. //to co ma byc widoczne dla zalogowanego uzytkownika
  12. }
  13.  
  14. ?>

Wg mnie to jest łatwiejszy sposób i bardziej bezpieczny od plików.
Pisane z palca także proszę uważać
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.