Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Sesje php - zapamiętywanie danych do bazy
#1
Witam wszystkich,
mam pewien problem z PHP i MySQL.
W ramach mojego ćwiczenia chciałbym zrobić panel administracyjny do bazy danych dla użytkowników.

Wyglądało by to w następujący sposób:
1 strona - Pola login i hasło.
(użytkownik się loguje do MySQL podając login i hasło - następnie jest to wpisywane do sesji)
2 strona - Panel administracyjny bazy.
(użytkownik wybiera sobie daną bazę z rozwijanego menu aby przejrzeć rekordy)
3 strona - Wyświetlanie wyników bazy.

W kodzie który napisałem to wygląda tak:
1 Strona - index.php
Kod:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>mysql local</title>
</head>
<body>

<form action="selectdb.php" method="post">
<center>
Login:&nbsp;<input type="text" name="login" size="10" maxlength="20"><br>
Hasło:&nbsp;<input type="password" name="pass" size="10" maxlength="20"><br>
<input type="submit" value="Zaloguj"/>
</center>
</form>

</body>
</html>

2 Strona - selectdb.php
Kod:
<?php
    session_start();
    //sprawdzamy warunek i przypisujemy posta do sesji
    if($_POST['login'])$_SESSION['login']=$_POST['login'];
    if($_POST['pass'])$_SESSION['pass']=$_POST['pass'];
    $login=$_SESSION['login'];
    $pass=$_SESSION['pass'];
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>mysql local</title>
</head>
<body>
<center><h1> Panel Admnistracyjny MySQL</h1></center>
<form action="baza.php" method="post">
<?php

    $host = "localhost";
    
    //sprawdzanie połączenia z bazą
    @$db = mysql_pconnect($host, $login, $pass);
    if(!$db)
        {
            echo "<center>błędny login lub hasło</center><br>";
            exit;
        }
    else
            echo "<center>zalogowany poprawnie !</center><br>";
?>
Baza:&nbsp;<select name="baza">
            <option value="local">local
            <option value="nie">niewybierajtej
            </select><br>
<input type="submit" value="wybierz"/>
</form>
</body>
</html>

3 Strona - baza.php
Kod:
<?php
    session_start();
    $login = $_SESSION['login'];
    $pass = $_SESSION['pass'];
?>
    
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>mysql local</title>
</head>
<body>
<?php
    
    $baza = $_POST['baza'];
    $host = "localhost";

    echo "<h1><br><center>baza: ";
    echo $_POST['baza'];
    echo "</center></h1>";

    //sprawdzanie połączenia z bazą
    @$db = mysql_pconnect($host, $login, $pass);
    if(!$db)
        {
            echo "<center>błędny login lub hasło</center><br>";
            exit;
        }
    else
            echo "<center>zalogowany poprawnie !</center><br>";
    //wybór bazy danych
    $baza = mysql_select_db($baza,$db);

    //formuła pytania SQL
    $res = mysql_query("select * from produkty",$cn);
    echo "<table><tr>";
    $n = mysql_num_fields($res); // ile kolumn
        for($i=0; $i<$n; $i++) // wyświetl nagłówki
            echo "<th>".mysql_field_name($res,$i)."</th>";
            echo "</tr>";
            while($row = mysql_fetch_array($res))
                { // wyświetl wiersze
                echo "<tr>";
                for($i=0; $i<$n; $i++) // dla każdej kolumny
                    echo "<td>".$row[$i]."</td>";
                    echo "</tr>";
                }
    echo "</table>";
?>
</body>
</html>


Niestety, nie przechowuje mi sesji.
Pracuje na lokalnym hoście w domu, na wewnętrznym środowisku apache+php+mysql - XAMPP

Logowanie do bazy z poziomu konsoli jest bezproblemowe, tak samo nie ma problemów z wyświetlaniem zapytania "select * from produkty".

Proszę o pomoc, jak mogę "bezpiecznie" przechowywać dane dotyczące loginu i hasła by użytkownik był ciągle zalogowany do bazy ?
Odpowiedz
#2
Ja proponuję Ci zrobić zmienną sesyjną np zalogowany, gdzie jeżeli osoba będzie zalogowana to wartość tej zmiennej będzie TRUE, natomiast jeżeli nie to FALSE, i na początku każdej podstrony sprawdzasz tą wartość.
PHP i MySQL Tworzenie stron WWW Vademecum profesjonalisty Wydanie 4
- sprzedam po rozsądnej cenie, stan jak nowa.

Carpe Di Em
Odpowiedz
#3
Ale co to znaczy logowanie do MySQL? Chyba terminologia nieopanowana. Na pewno chodzi o logowanie z wykorzystaniem danych z bazy MySQL.
Odpowiedz
#4
(26-07-2010, 17:35)KeeL napisał(a): Ja proponuję Ci zrobić zmienną sesyjną np zalogowany, gdzie jeżeli osoba będzie zalogowana to wartość tej zmiennej będzie TRUE, natomiast jeżeli nie to FALSE, i na początku każdej podstrony sprawdzasz tą wartość.

Ammm...
Nie rozumię...
Chodzi Tobie aby sprawdzać czy sesja jest przechowywana ?
- bo jeżeli tak, to już to sprawdzałem wyświetlając poprzez
Kod:
echo $_SESSION['login'];
echo $_SESSION['login'];
echo $login;
echo $pass;

i jest przechowywana do 2giej strony selectdb.php
ale już w baza.php jej nie ma...

Bo z samą zmienną sesyjną boolowską raczej się nie zalogujemy do sql'a : P

Może nie bawić się w sesje, a zmienić na pola ukryte... ? i przekazywać je z podstrony na podstronę - rozwiązanie partyzanckie... : /

(26-07-2010, 17:38)mateo napisał(a): Ale co to znaczy logowanie do MySQL? Chyba terminologia nieopanowana. Na pewno chodzi o logowanie z wykorzystaniem danych z bazy MySQL.

Chodzi mi o to aby się logować do MySQL w identyczny sposób jak to robimy z poziomu konsoli.
Z tym że chciałem do tego zrobić własny interfejs graficzny... z ograniczeniem dla niektórych userów do edycji poszczególnych baz -> zapis/modyfikacja rekordów


Za każdym razem wywala mi takie warningi:
Kod:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\xampp\htdocs\selectdb.php:1) in C:\xampp\xampp\htdocs\selectdb.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\xampp\htdocs\selectdb.php:1) in C:\xampp\xampp\htdocs\selectdb.php on line 2

edit:
Dobra ogarnąłem to, wina leży po stronie XAMPP, załadowałem to na zewnętrzny serwer i jest ok. Sprawdźcie o co mi chodziło: http://mysql.tomsol.cba.pl/
login: tomsol haslo: 123456

Tylko chciałbym, by ktoś mi wytłumaczył dlaczego u mnie na komputerze się tak to krzaczy ? dlaczego takie monity wywala mi ? Czy da się to naprawić ?
Przecież nie będę za każdym razem UL na serwer moich wypocin...

Cookie mam akceptowane przez przeglądarkę.
Odpowiedz
#5
spójrz co Ci wychodzi po zalogowaniu,

Kod:
Panel Admnistracyjny MySQL

zalogowany
błędny login lub hasło


Wpisze byle co do tego i wychodzi to samo,


Co w ogóle chcesz osiągnąć jaki masz cel?



Po co przechowywujesz login i hasło w zmiennych sesyjnych?





Chcesz aby witryna była dostępna po podaniu hasła i loginy?
PHP i MySQL Tworzenie stron WWW Vademecum profesjonalisty Wydanie 4
- sprzedam po rozsądnej cenie, stan jak nowa.

Carpe Di Em
Odpowiedz
#6
(26-07-2010, 18:48)KeeL napisał(a): spójrz co Ci wychodzi po zalogowaniu,

Kod:
Panel Admnistracyjny MySQL

zalogowany
błędny login lub hasło

Sorry zmienna string - "zalogowany" była to zmienna testowa nie mająca nic do dodania w kodzie. Dodałem ją przed załadowaniem plików do bazy.
- poprawiłem
- wyniki wyświetlane "na sztywno" ale działa.

(26-07-2010, 18:48)KeeL napisał(a): Wpisze byle co do tego i wychodzi to samo,


Co w ogóle chcesz osiągnąć jaki masz cel?



Po co przechowywujesz login i hasło w zmiennych sesyjnych?





Chcesz aby witryna była dostępna po podaniu hasła i loginy?
Chciałbym aby strona a właściwie baza była dostępna po zalogowaniu się.
Aby określony użytkownik mógł sprawdzać bazę / modyfikować ją wg. potrzeb.

Jak wcześniej pisałem, jest to dla mnie ćwiczenie, dopiero poznaje język PHP, a właściwie jego funkcje którymi dysponuje.


Co do mojego problemu na localhoscie pomogło zapisanie pliku w formacie utf-8 bez BOM...
hm...
Odpowiedz
#7
PHP i MySQL Tworzenie stron WWW Vademecum profesjonalisty Wydanie 4
- sprzedam po rozsądnej cenie, stan jak nowa.

Carpe Di Em
Odpowiedz
#8
Odpowiedz


Podobne wątki…
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  cron nie łączy się z bazą danych michalszyd 3 5,004 18-01-2018, 06:15
Ostatni post: ytprzetwornik
  Zmniejszenie czasu dostępu do bazy darling 8 8,412 06-12-2017, 18:00
Ostatni post: arki878
  Przeszukiwanie bazy, przechowywanie wyników vundo 3 4,191 02-12-2016, 20:16
Ostatni post: tereska3
  Pobieranie danych z dwóch baz danych jarekcda 2 5,188 28-11-2016, 11:55
Ostatni post: ania9
  podział danych za pomocą substr ppsqm 1 4,148 18-06-2014, 15:18
Ostatni post: Kartofelek

Skocz do:


Użytkownicy przeglądający ten wątek:
Sponsorzy i przyjaciele
SeoHost.pl