Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przesylanie zmiennej do kazdej kolejnej strony?
Forum PHP.pl > Forum > Przedszkole
v1t4n
Zrobilem cos w stylu konta admina (i to cos jest bardzo prymitywne). Zaczyna sie od logowania pozniej weryfikacja hasla:
  1. <?
  2. if($adminpass == "zaq12wsx")
  3. {
  4. include("admin/main.php");
  5. }
  6. else
  7. echo("<font color=red>Podane hasło administratora jest niepoprawne!!</font>");
  8. ?>

Haslo wysylane jest przez formularz
  1. <form action="?admin=mpage" method="post">
  2. Podaj hasło administratora:<BR>
  3. <input type="password" name="adminpass">
  4. <input type="submit" value="Dalej">
  5. </form>

Ale jest jeden problem... Gdy chce zeby calosc caly czas przechodzila przez weryfikacje hasla pojawia sie blad. Blad polega na tym ze formularz wysyla haslo tylko do strony glownej konta admina a dalej wygasa. Czy jest jakas metoda zeby strona przechowywala haslo az do wylogowania sie?
Zalezy mi na tym zeby nie mozna bylo wejsc na jakas podstrone konta admina bez zalogowania sie
nospor
zainresuj się sesją (session). Bylo wiele razy na forum. przejrzyj
TomASS
POczytaj o sesjach, lub o cisteczkach.

----edit---
@nospor: krucafuks znowusz o 32 sek lepszy smile.gif
yavaho
Poczytaj o sesjach
manual
logowanie

edit
ech ja dopiero na #3 winksmiley.jpg
kszychu
Gwoli ścisłości; jak jeszcze raz zobaczę trzy takie same odpowiedzi pod rząd, to wszyscy poza pierwszym dostanąostrzeżenia. Od czego jest kasowanie postów?
v1t4n
Ok znalazlem opis ciasteczek (nigdy ich nie uzywalem biggrin.gif ). I teraz jezeli chcialbym zrobic ciasteczko odpowiednie do tego skryptu mialo by ono brzmiec:
  1. <?php
  2. setcookie('adminpass', $adminpass, time());
  3. ?>

no ok wstawie a jesli chcialbym zabezpieczyc przed odczytem z innych domen tego hasla to po time() wpisac 'www.moja-strona.rus'?
TomASS
To czy uzytkownik jest zalogowany to ja wole trzymac w sesji:

1. Logowanie:

  1. <?php
  2.  
  3. $query = "SELECT * FROM swd_users WHERE Login='$login' AND Haslo='$haslo' LIMIT 1";
  4. $USER['ID_user']=$row['ID'];
  5. $USER['Typ']=$row['Typ'];
  6. $USER['ID_podmiot']=$row['ID_podmiot'];
  7. $USER['Ostatnie_logowanie']=$row['Ostatnie_logowanie'];
  8. $USER['Strona']=$row['Strona'];
  9. $USER['Imie']=$row['Imie'];
  10. $USER['Nazwisko']=$row['Nazwisko'];
  11. $USER['QWhere']=$row['QWhere'];
  12. $USER['Lang']=$row['Lang'];
  13. $query = "UPDATE swd_users SET Ilosc_logowan= Ilosc_logowan+1, Ostatnie_logowanie='$Date' WHERE ID='".$USER['ID']."' LIMIT 1";
  14. $result = mysql_query($query);
  15. header("Location: ".$USER['Strona']);
  16.  
  17. ?>


i potem na każdej stronie:
  1. <?php
  2.  
  3.  
  4. $USER = $_SESSION['USER'];
  5.  
  6. if($USER['Typ']=='jakis_typ'){
  7.  
  8. }
  9. else access_denaid();
  10.  
  11. ?>
v1t4n
no ok a jak moj serwer nie obsluguje MySQL?
nospor
A co do sesji ma MySql? Czytaes ty na forum jak używać sesji? Poczytaj, a potem zadawaj pytania
W mysql mozesz trzymac uzytkowników. sama sesja nie ma tu nic do tego. Jak nie masz mysql to zainteresuj się plikami

@TomASS: jesli tak to czemu w swoim poprzednim poscie podales też ciasteczka jako przyklad ? tongue.gif
TomASS
Cytat
TomASS
zanim zaczniesz pomagać poczytaj ty o sesjach 
chodzi mi o: ( na forum tez było)
  1. <?php
  2.  
  3. ?>

Co się czepiasz i co Ci się nie podoba? cool.gif

Cytat
teraz już masz zappisane, a woli dobrej woli ;p bo nie moge patrzeć jak ktoś pyta o prostą rzecz a dostaje jakies kody zagmatwane podam przykłąd na zbanowanie klienta jak sie pcha tam gdzie niewolno (<-oddzielnie?)
  1. <?php
  2.  
  3. sesion_start(); //to juz wiesz ze musi byc :)
  4. if($_SESSION["adminpass"]==""){//jeseli zmienna sesyjna jest pusta
  5. echo 'dostęp zabroniony';
  6. }else{
  7. echo 'witaj w administracji';
  8. }
  9. /* analogcznie możesz zrobić z $_COOKIE podstawiając je zamiast $_SESSION*/
  10.  
  11. ?>


Ohoho....to żeś zasuną, mój kod za to bardzo skomplikowany:
  1. <?php
  2. $USER = $_SESSION['USER'];
  3. if($USER['Typ']=='jakis_typ'){
  4.  
  5. }
  6. else access_denaid();
  7. ?>


Generalnie napisałeś to samo co było w poprzednich postach.
v1t4n
OK. Czytalem o sesjach i teraz bede udawal ze cos zrozumialem. Wiec na strone weryfikacji hasla wstawilem taki kod (wlasciwie zmodyfikowalem go):
  1. <?php
  2. if($adminpass == "zaq12wsx")
  3. {
  4. if (!isset($_SESSION['adminpass']))
  5. {
  6. $_SESSION['adminpass'] = "zaq12wsx";
  7. }
  8. include("admin/main.php");
  9. }
  10. else
  11. echo("<font color=red>Podane hasło administratora jest niepoprawne!!</font>");
  12. ?>

A na nastepnych stronach wstawilem
  1. <?php
  2. $adminpass=$_SESSION['adminpass'];
  3. ?>

I co zrobilem zle ze nadal nie dziala? Czy to jest zwiazane z wersja php? (mam 5)
TomASS
Ale co nie działa?

Spróbuj dać:

  1. <?php
  2.  
  3. session_start(); //nie zapomnij o tym
  4. print_r($_SESSION);
  5.  
  6. ?>


i zobacz co Ci wyświetla.
Yashin
Może coś takiego...

Formularz logowania:
  1. <!-- kod -->
  2. <form action="?admin=mpage" method="post">
  3. Podaj hasło administratora:<BR>
  4. <input type="password" name="adminpass">
  5. <input type="submit" value="zaloguj">
  6. </form>
  7. <!-- kod -->


Logowanie admina:
  1. <?php
  2. $good_pass = 'twoje_dobre_haslo'; //dobre haslo
  3. if($_POST['adminpass'] == $good_pass) $_SESSION['adminpass'] = $good_pass;
  4. header("Location: admin.php");
  5. ?>


Admin
  1. <?
  2. $good_pass = 'twoje_dobre_haslo'; //dobre haslo
  3. if($_SESSION['adminpass'] == $good_pass){
  4. //kod admina
  5. //includy
  6. //et cetera
  7. //et cetera
  8. //et cetera = itp :]
  9. }else{
  10. echo "<font color=red>Podane hasło administratora jest niepoprawne!</font>";
  11. }
  12. ?>


PS.
Każdy plik admina ma być zrobiony tak:
  1. <?
  2. $good_pass = 'twoje_dobre_haslo'; //dobre haslo
  3. if($_SESSION['adminpass'] == $good_pass){
  4. //kod
  5. }else{
  6. echo "<font color=red>Coś kombinujesz ~~</font>";
  7. }
  8. ?>



Sczerze mówiąc polecam jeden plik admina i tam dać ifem/switchem includowanie podstron admina


PS. Pisane na sucho... Nie wiem czy dziala :]
yavaho
Moze zaczniemy od podstaw smile.gif To co naskrobie ponizej bedzie bardzo prymitywne ale moze dzieki temu zrozumiesz zasade dzialania sesji.
Najpierw logowanie
  1. <?php
  2. if($_POST['haslo']=='twoje_haslo'){
  3. //zalogowany
  4. $_SESSION['admin']=1; //ustawienie zmiennej sesyjnej
  5. //wyswietlenie stron dostepnych dla admina
  6. //lub przekierowanie na inna strone
  7. }else{
  8. //brak dostepu
  9. }
  10. ?>
i teraz od momentu ustawienia zmiennej sesyjnej na kazdej stronie serwisu nalezy umiescic:
session_start();
Jezeli strona opiera sie o jeden plik index.php ktory includuje pozostale strony to nic prostrzego jak dac ten wpis w pierwszej linijce w pliku index.php

Na stronach dostepnych tylko dla admina trzeba zawsze sprawdzac czy istnieje sesja:
  1. <?php
  2. if(isset($_SESSION['admin'])){
  3. //wyswietlenie strony dostepnej dla admina
  4. }else{
  5. //tu mozna zrobic przekierowanie do strony z logowaniem lub do strony glownej
  6. }
  7. ?>


Albo np na kazdej stronie serwisu dostepnej normalnie dla wszystkich uzytkowikow mozna sprawdzic czy istnieje sesja i na podstawie tego wyswietlic menu dostepne tylko dla admina.
  1. <?php
  2. //tutaj jakies pozycje menu na stronie
  3. if(isset($_SESSION['admin'])){
  4. //a tutaj menu tylko dla admina
  5. }
  6. ?>
v1t4n
OK. Pokombinowalem i mam tak (podaje w odpowiedniej kolejnosci):
1. Strone z logowaniem:
  1. <form action="?admin=mpage" method="post">
  2. Podaj hasło administratora:<BR>
  3. <input type="password" name="adminpass">
  4. <input type="submit" value="Dalej">
  5. </form>
  6. </html>

2. Strone weryfikacji hasla:
  1. <?
  2. if($adminpass == "zaq12wsx")
  3. {
  4. if (!isset($_SESSION['adminpass']))
  5. {
  6. $_SESSION['adminpass'] = "zaq12wsx";
  7. }
  8. include("admin/main.php");
  9. }
  10. else
  11. echo("<font color=red>Podane hasło administratora jest niepoprawne!!</font>");
  12. ?>

3. Glowna rozdzielajaca podstrony panelu administracyjnego:
  1. <?
  2. $admincmd=$_GET["admincmd"];
  3. $adminpass=$_SESSION['adminpass'];
  4. if($admincmd > "0")
  5. {
  6. if(file_exists("admin/$admincmd.php") == 1)
  7. {
  8. include("admin/$admincmd.php");
  9. }
  10. else
  11. echo("<font color=red>Nieprawidłowa komenda</font>");
  12. }
  13. else
  14. include("admin/mpage.php");
  15. ?>

4. Strone glowna panelu (tzw. menu):
  1. <table width="490" class="thin" cellspacing="0">
  2. <tr>
  3. <th colspan="2" class="thin">
  4. Panel administracyjny
  5. </th>
  6. </tr>
  7. <tr>
  8. <td class="thin">
  9. <b>Dodaj nowy numer
  10. </td>
  11. <td class="thin"><a href="?admin=mpage&admincmd=addnumber">Klik!</a>
  12. </td>
  13. </tr>
  14. <tr>
  15. <td class="thin">
  16. <b>Edytuj numer
  17. </td>
  18. <td class="thin"><a href="?admin=mpage&admincmd=editnumber">Klik!</a>
  19. </td>
  20. </tr>

Zrobilem jak doradzaliscie. Wstawilem skrypt na obsluge sesji na strone includujacej itp. Z tym ze pojawia sie blad i kompletnie nie kumam czemu. Mianowicie: dodalem session_start(); na stronie nr 3:
Cytat
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at c:\usr\krasnal\www\gazetka\index.php:21) in c:\usr\krasnal\www\gazetka\admin\main.php on line 4

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\usr\krasnal\www\gazetka\index.php:21) in c:\usr\krasnal\www\gazetka\admin\main.php on line 4
Yashin
Używaj $_GET, $_POST, $_SESSIN etc... Bez tego to każdy skrypt ci nie będzie chodził poprawnie ~~

session_start() ma być odrazu za <?
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.