Wieviór
27.03.2004, 09:38:01
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
27.03.2004, 12:14:07
HALLO!!
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
27.03.2004, 16:10:42
Kod
Błąd zapytania!
ale wydaje sie ze bedzie dzialac
a pozmieniałeś te nazwy pól?
Wieviór
27.03.2004, 16:18:24
tak
zmieniłem lekko kod. spróbuj teraz
Wieviór
27.03.2004, 16:37:47
Skrypt tak jakby zostaje w miejscu, jak sie zaloguje to zostaje przy index.php, juz mam którys rz taki blad
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
27.03.2004, 19:57:28
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
27.03.2004, 20:06:37
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.
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
28.03.2004, 15:43:40
Chewolf
28.03.2004, 15:55:36
[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
28.03.2004, 15:55:36
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.