Witam. Jestem tu nowy i jestem też 'świerzakiem' w tematyce php jednak ostatnio stało się moim hobby. Napisałem sobie skrypcik logowania, który jest częścią większego skryptu. Jednak jako niedoświadczony i nie mający świadomości istnienia manuala napisałem go w oparciu o session_register. Wszystko było pięknie dopóki odpalałem skrypt na Wampie lokalnie. Po wrzuceniu na serwer wyszło szydło z worka i odkryłem, ze register global jest wyłączone i session_register nie działa. Trzeba uczyć się na błędach więc zacząłem próbę przerobienia skryptu tak aby działał bez tej funkcji. I tu pojawia się problem. O ile pozamieniałem zmienne z @session_register("zalogowany"); na $zalogowany=$_SESSION["zalogowany"]; o tyle skrypt nie rejestruje tych sesji wcale. Poprzedni sposób działał bezbłędnie na lokalnym serwerze. Logować loguje, jednak nie zapisuje do sesji wartości zmiennych pobranych z bazy w trakcie wykonywania skryptu. Walczę z tym od wczoraj i nie mam już pomysłów. Poniżej wklejam kod i proszę o wskazówki i może małą lekcję jak to powinno być zrobione. Z góry dziękuję za pomoc.
Stara wersja z session_register:
Stara wersja z session_register:
Kod PHP:
<?php
ob_start();
?><?php
@session_start();
@session_register("zalogowany");
@session_register("admin");
@session_register("user");
@session_register("balans");
if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;
include("includes/baza.php");
$admin=1; //z góry ustalony NUMER KONTA admina
if($_GET["wyloguj"]=="tak"){$_SESSION["zalogowany"]=0;}
if($_SESSION["zalogowany"]!=1){
if(
!empty($_POST["login"])
AND !empty($_POST["haslo"])
AND preg_match('@^[A-Z]{1,1}[a-ząćęłńóśźżĄĆĘŁŃÓŚŹŻ]{2,} [] [A-Z]{1,1}[a-ząćęłńóśźżĄĆĘŁŃÓŚŹŻ]{2,}$@', $_POST["login"])
AND preg_match('@^[0-9]{1,9}$@', $_POST["haslo"])){
if(mysql_num_rows(mysql_query("select * from konta where user = '".htmlspecialchars($_POST["login"])."'
AND haslo = '".htmlspecialchars($_POST["haslo"])."'"))){
$_SESSION["zalogowany"]=1;
$_SESSION["user"]=$_POST["login"];
$_SESSION["user"]=$user; //zalogowany klient sklepu NAZWA UZYTKOWNIKA
$zapytanie = mysql_query("SELECT nrkonta FROM konta WHERE user = '$user';");//sprawdzenie numeru konta klienta
$record = mysql_fetch_array($zapytanie);
$record["nrkonta"];
$_SESSION["nrkonta"]=$record["nrkonta"];
$nrkonta=$_SESSION["nrkonta"];//przypisywanie NUMERU KONTA klienta do zmiennej sesyjnej
$zapytanie2 = mysql_query("SELECT balans FROM konta WHERE nrkonta = '$nrkonta';");
$record2 = mysql_fetch_array($zapytanie2);
$record2["balans"];
$_SESSION["balans"]=$record2["balans"];//pobieranie STANU KONTA i przypisywanie do zmiennej sesyjnej
if($nrkonta==$admin)
{header("Location: admin.php");
exit();}
else{
header("Location: main.php");
exit();}
}
else {include("includes/logowanie.php");
echo ("<div id=dialog style=text-align:center title=Komunikat systemowy>
Błędny login lub hasło.</div>");}
}
else {
include("includes/logowanie.php");
if($_GET["wyloguj"]=="tak")
{echo "Wylogowano pomyślnie.";
header('location: index.php');}
else {
if(isset($_POST[login]))
{echo ("<div id=dialog style=text-align:center title=Komunikat systemowy>
Proszę wprowadzić pełne dane logowania.</div>");}}
}
}
else{echo "Zalogowany";};
?>