Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Przesylanie zmiennej do kazdej kolejnej strony?
v1t4n
post 9.09.2005, 14:37:03
Post #1





Grupa: Zarejestrowani
Postów: 111
Pomógł: 16
Dołączył: 19.02.2005
Skąd: Dębica

Ostrzeżenie: (0%)
-----


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


--------------------
Psik!! A masz!! ...chamie - Porucznik Borewicz
Go to the top of the page
+Quote Post
nospor
post 9.09.2005, 14:41:59
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




zainresuj się sesją (session). Bylo wiele razy na forum. przejrzyj


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
TomASS
post 9.09.2005, 14:42:31
Post #3





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

Ostrzeżenie: (0%)
-----


POczytaj o sesjach, lub o cisteczkach.

----edit---
@nospor: krucafuks znowusz o 32 sek lepszy smile.gif

Ten post edytował TomASS 9.09.2005, 14:45:05


--------------------
Go to the top of the page
+Quote Post
yavaho
post 9.09.2005, 14:45:43
Post #4





Grupa: Zarejestrowani
Postów: 449
Pomógł: 0
Dołączył: 26.05.2004
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


Poczytaj o sesjach
manual
logowanie

edit
ech ja dopiero na #3 winksmiley.jpg

Ten post edytował yavaho 9.09.2005, 14:48:20


--------------------
Książki informatyczneKsiążki biznesowe
Warsztat: notepad hardcore
Go to the top of the page
+Quote Post
kszychu
post 9.09.2005, 14:50:15
Post #5





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

Ostrzeżenie: (0%)
-----


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?


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
v1t4n
post 9.09.2005, 14:56:25
Post #6





Grupa: Zarejestrowani
Postów: 111
Pomógł: 16
Dołączył: 19.02.2005
Skąd: Dębica

Ostrzeżenie: (0%)
-----


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'?


--------------------
Psik!! A masz!! ...chamie - Porucznik Borewicz
Go to the top of the page
+Quote Post
TomASS
post 9.09.2005, 14:59:22
Post #7





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

Ostrzeżenie: (0%)
-----


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. ?>


Ten post edytował TomASS 9.09.2005, 15:04:38


--------------------
Go to the top of the page
+Quote Post
v1t4n
post 9.09.2005, 15:00:11
Post #8





Grupa: Zarejestrowani
Postów: 111
Pomógł: 16
Dołączył: 19.02.2005
Skąd: Dębica

Ostrzeżenie: (0%)
-----


no ok a jak moj serwer nie obsluguje MySQL?


--------------------
Psik!! A masz!! ...chamie - Porucznik Borewicz
Go to the top of the page
+Quote Post
nospor
post 9.09.2005, 15:02:53
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
TomASS
post 10.09.2005, 07:32:21
Post #10





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
v1t4n
post 10.09.2005, 13:17:36
Post #11





Grupa: Zarejestrowani
Postów: 111
Pomógł: 16
Dołączył: 19.02.2005
Skąd: Dębica

Ostrzeżenie: (0%)
-----


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)


--------------------
Psik!! A masz!! ...chamie - Porucznik Borewicz
Go to the top of the page
+Quote Post
TomASS
post 10.09.2005, 15:30:42
Post #12





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
Yashin
post 10.09.2005, 15:41:29
Post #13





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 2.09.2005

Ostrzeżenie: (0%)
-----


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 :]
Go to the top of the page
+Quote Post
yavaho
post 10.09.2005, 20:36:20
Post #14





Grupa: Zarejestrowani
Postów: 449
Pomógł: 0
Dołączył: 26.05.2004
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


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. ?>


--------------------
Książki informatyczneKsiążki biznesowe
Warsztat: notepad hardcore
Go to the top of the page
+Quote Post
v1t4n
post 11.09.2005, 12:18:18
Post #15





Grupa: Zarejestrowani
Postów: 111
Pomógł: 16
Dołączył: 19.02.2005
Skąd: Dębica

Ostrzeżenie: (0%)
-----


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


--------------------
Psik!! A masz!! ...chamie - Porucznik Borewicz
Go to the top of the page
+Quote Post
Yashin
post 11.09.2005, 17:44:04
Post #16





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 2.09.2005

Ostrzeżenie: (0%)
-----


Używaj $_GET, $_POST, $_SESSIN etc... Bez tego to każdy skrypt ci nie będzie chodził poprawnie ~~

session_start() ma być odrazu za <?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 8.07.2025 - 08:06