Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Znów sesje
Forum PHP.pl > Forum > Gotowe rozwiązania
Wieviór
Mam skrypt logowania i sesji... dziala mi :!:
Ale on jest dostosowany do jednego loginu i jednego hasla, a ja bym chcial zeby byl oparty na bazie danych, tzn. mam tabele uzytkownicy i tam mam pola "login" "haslo" i inne ale nie dotyczy.'
Czy moglibyscie mi zmienic ten skrypt na taki na baze?

index.php
[php:1:6c25ac14b2]
<html>
<body>
<form action="login.php" method="post">
login <input type="text" name="login"><br />
password<input type="password" name="password"> <br />
<input type="submit" value="loguj">
</form>
</body>
</html>
[/php:1:6c25ac14b2]

login.php
[php:1:6c25ac14b2]<?php
session_start();

//tu nalezalo by sie odwolac do bazy
if ($_POST['login'] == "user1" && $_POST['password'] == "123")
{
$_SESSION["LOGGED_USER_ID"]="user1";
header ("location: konto.php");
}
else
{
session_destroy();
header ("location: index.php");
}
?>[/php:1:6c25ac14b2]

konto.php
[php:1:6c25ac14b2]<?php
session_start();

if (!isset($_SESSION["LOGGED_USER_ID"]))
{
session_destroy();
header ("location: index.php");
}
else
{
print "<a href="logout.php"> logout </a>";
}
?>[/php:1:6c25ac14b2]

logout.php
[php:1:6c25ac14b2]<?php
session_start();
$_SESSION["LOGGED_USER_ID"]="";
session_destroy();
header ("location: index.php");
?>[/php:1:6c25ac14b2]
Wieviór
HALLO!! laugh.gif
Ive
login.php:
[php:1:e944f0a076]<?php

//wyedytuj sobie te zmienne
$dbHost = 'host';
$dbUser = 'nazwa_usera_do_mysqla';
$dbHaslo = 'haslo_do_mysqla';
$dbName = 'nazwa_bazy';
//koniec edycji

mysql_connect("$dbHost","$dbUser","$dbHaslo") or die ("Nie można połączyć się z MySQL");
mysql_select_db("$dbName") or die ("Nie można połączyć się z bazą danych");

$query = mysql_query("SELECT * FROM `uzytkownicy` WHERE `username`='".$_POST['login']."' AND `haslo`='".$_POST['password']."'");
if(!$query) die("Błąd zapytania!");
$ile = mysql_num_rows($query);
if($ile<1) die("Podane dane są błędne!");

$_SESSION['LOGGED_USER_ID']=$_POST['login'];
header("Location: konto.php");
?>[/php:1:e944f0a076]

pisałem szybko ale powinno działać ;]

[EDIT]
w zmiennej $query podałem moje przykładowe nazwy pól w tabeli uzytkownicy. zmien je sobie do danych ustawionych u ciebie ;]
Wieviór
Kod
Błąd zapytania!


ale wydaje sie ze bedzie dzialac tongue.gif
Ive
a pozmieniałeś te nazwy pól?
Wieviór
tak
Ive
zmieniłem lekko kod. spróbuj teraz
Wieviór
Skrypt tak jakby zostaje w miejscu, jak sie zaloguje to zostaje przy index.php, juz mam którys rz taki blad laugh.gif
Ive
a wstaw taki kodzik:
[php:1:37eff85d44]<?php
echo" Skrypt nie staje w miejscu ;] ";
?>[/php:1:37eff85d44]
po:
[php:1:37eff85d44]<?php
if($ile<1) die("Podane dane są błędne!");
?>[/php:1:37eff85d44]
Wieviór
Skrypt nie staje w miejscu ;]
Warning: Cannot modify header information - headers already sent by (output started at c:usrkrasnalwwwtypowanienowe2login.php:18) in c:usrkrasnalwwwtypowanienowe2login.php on line 21

:?
czachor
Błąd z headerem genruje Ci ten fragment z "Skrypt nie staje w miejscu", po prostu to wykasuj albo wstaw ob_start(); na początek skryptu i ob_end_flush(); na koniec.
Ive
no to trzeba było od razu pisac że ci ten komunikat wywala ;] bo teraz to praktycznie w każdym skrypcie w którym wysyłasz informacje do przeglądarki to musisz wstawić funkcję ob_start() na samym początku i ob_end_flush na samym końcu ;]
Pozdrawiam, Ive
Wieviór
Tzn. Co gdzie i jak?? laugh.gif tongue.gif biggrin.gif
Chewolf
[php:1:652a802f25]<?php
ob_start();
//wyedytuj sobie te zmienne
$dbHost = 'host';
$dbUser = 'nazwa_usera_do_mysqla';
$dbHaslo = 'haslo_do_mysqla';
$dbName = 'nazwa_bazy';
//koniec edycji

mysql_connect("$dbHost","$dbUser","$dbHaslo") or die ("Nie można połączyć się z MySQL");
mysql_select_db("$dbName") or die ("Nie można połączyć się z bazą danych");

$query = mysql_query("SELECT * FROM `uzytkownicy` WHERE `username`='".$_POST['login']."' AND `haslo`='".$_POST['password']."'");
if(!$query) die("Błąd zapytania!");
$ile = mysql_num_rows($query);
if($ile<1) die("Podane dane są błędne!");

$_SESSION['LOGGED_USER_ID']=$_POST['login'];
header("Location: konto.php");
ob_end_flush();
?>[/php:1:652a802f25]
Wieviór
Dodalem na poczatek:
ob_start();

Na koniec:
ob_end_flush();

I znów stoi w miejscu, ale nie ma komunikatu a zostawilem echo... :?
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-2024 Invision Power Services, Inc.