Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów
Problem ze skryptem logowania - Wersja do druku

+- Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów (https://www.webmastertalk.pl)
+-- Dział: Technologie internetowe - tworzenie stron WWW (https://www.webmastertalk.pl/forum-technologie-internetowe-tworzenie-stron-www)
+--- Dział: Początkujący webmaster (https://www.webmastertalk.pl/forum-poczatkujacy-webmaster)
+--- Wątek: Problem ze skryptem logowania (/thread-problem-ze-skryptem-logowania)

Strony: 1 2


Problem ze skryptem logowania - neneth - 08-10-2010

Witam, mam problem ze skryptem logowania, a jestem początkującym webmasterem, więc proszę o wyrozumiałość. Mianowicie chodzi mi o to, że gdy się próbuję zalogować, to cały czas wyskakuje mi komunikat "Nie jesteś zalogowany". Oto te pliki:

plik conn.php
Kod:
<?php
session_start();
ob_start();
if ($_SESSION['login'] > 0) {
echo "Nie jesteś zalogowany...";
exit;
}
    $host='localhost'; //Tu możliwe że będziesz musiał wpisać innego hosta ale często jest to właśnie localhost
    $login='.............................';
    $haslo='..............................';
    $nazwaBazy='...........................';
    $lacz=mysql_connect($host, $login, $haslo);
    if ($lacz==false) {
    
    die('Brak polaczenia z serwerem');
    
    }
    
    mysql_select_db($..........................) or die(mysql_error());
    
        mysql_close();
    ob_end_flush();
    ?>

oraz plik login.php
Kod:
<?php

session_start();
ob_start();
if ($_SESSION['login'] != "login") {
echo "Nie jeste_ zalogowany...";
exit;
}

session_start();

if (isset($_POST['konto']) and isset($_POST['password']) )

{

require('conn.php');

$konto=mysql_real_escape_string(trim($_POST['konto']));

$password=mysql_real_escape_string(trim($_POST['password']));

if ($konto!="" and $password!="")

{

$password = sha1(md5($password));

$zapytanie="SELECT id FROM user WHERE login='$konto' and password ='$password'";

$temp=mysql_query($zapytanie) or die("Wyst?pi? b??d");

$ile=mysql_num_rows($temp);

$temp=mysql_fetch_array($temp);

$id=$temp['id'];



if ($ile==1)

{

$_SESSION['user_id']=$id;

$_SESSION['login']=$konto;

echo('Zostales zalogowany. ');

}

else echo ('Podales zle dane. Kliknij wstecz aby sprobowac ponownie.');

}

}



ob_end_flush();

?>
Proszę o wskazanie błędów i napisanie poprawnej treść. Jest to dla mnie bardzo ważne.


RE: Problem ze skryptem logowania - R_Rafalsky - 08-10-2010

Masz dwa sprawdzenia zalogowania
Kod PHP:
if ($_SESSION['login'] > 0) {
echo 
"Nie jesteś zalogowany..."
Ten informuje, że jeżeli login w sesji jest większy od zera to wyświetla napis "Nie jesteś zalogowany" czyli jeżeli login ma jakąś wartość to i tak ten tekst jest.

Drugi:
Kod PHP:
if ($_SESSION['login'] != "login") {
echo 
"Nie jeste_ zalogowany...";
exit;

Informuje, że jeżeli zawartość zmiennej login w sesji jest różna od tekstu "login" to nie jesteś zalogowany.

Te rzeczy warto by poprawić.


RE: Problem ze skryptem logowania - Pedro84 - 08-10-2010

Używaj BBCode!

Poza tym:
Kod:
$_SESSION['login']=$konto;
gdzie konto jest nazwą użytkownika.

A potem to sprawdzasz:
Kod:
if ($_SESSION['login'] > 0) {



RE: Problem ze skryptem logowania - neneth - 11-10-2010

Witam, dziękuję za podpowiedź. Poprawiłam skrypt i teraz wygląda następująco:
login.php
Kod PHP:
session_start();
ob_start();
$_SESSION['login']=$konto
if (
$_SESSION['login'] > 0){
echo 
"Nie jeste_ zalogowany...";
exit;
}

session_start();

if (isset(
$_POST['konto']) and isset($_POST['password']) )

{

require(
'conn.php');

$konto=mysql_real_escape_string(trim($_POST['konto']));

$password=mysql_real_escape_string(trim($_POST['password']));

if (
$konto!="" and $password!="")

{

$password sha1(md5($password));

$zapytanie="SELECT id FROM user WHERE login='$konto' and password ='$password'";

$temp=mysql_query($zapytanie) or die("Wyst?pi? b??d");

$ile=mysql_num_rows($temp);

$temp=mysql_fetch_array($temp);

$id=$temp['id'];



if (
$ile==1)

{

$_SESSION['user_id']=$id;

$_SESSION['login']=$konto;

echo(
'Zostales zalogowany. ');

}

else echo (
'Podales zle dane. Kliknij wstecz aby sprobowac ponownie.');

}

}



ob_end_flush(); 

a plik conn.php tak:

Kod PHP:
session_start();
ob_start();
$_SESSION['login']=$konto;
if (
$_SESSION['login'] > 0)
 {
echo 
"Nie jesteś zalogowany...";
exit;
}
    
$host='localhost'//Tu możliwe że będziesz musiał wpisać innego hosta ale często jest to właśnie localhost
    
$login='.............................';
    
$haslo='...................';
    
$nazwaBazy='.................................';
    
$lacz=mysql_connect($host$login$haslo);
    if (
$lacz==false) {
     
    die(
'Brak polaczenia z serwerem');
     
    }
     
    
mysql_select_db($...........................) or die(mysql_error());
    
        
mysql_close();
    
ob_end_flush(); 


Proszę o jakieś wskazówki, jeśli jest jakiś błąd, wytłumaczenie go i zamianę wierszy kodu na poprawny. I jeśli to możliwe, to proszę podać mi polecenie, przekierowania po zalogowaniu na stronę główną serwisu. Plik główny strony to index.php .


RE: Problem ze skryptem logowania - R_Rafalsky - 11-10-2010

Kod PHP:
die("Wyst?pi? b??d"); 
Strona kodowa chyba niepoprawna skoro znaki gubisz.

Przekierowanie robisz tak:
Kod PHP:
header("Location: index.php"); 



RE: Problem ze skryptem logowania - neneth - 11-10-2010

Dziękuję za odpowiedź i mam jeszcze pytanie, gdzie mam wkleić wiersz przekierowania?

Przekierowanie robisz tak:
Cytat:header("Location: index.php");

I pytanie 2. jakiego kodu mam użyć, aby wszystkie komunikaty zwrotne ukazywały się na stronie głównej (index.php) w miejscu formularza (komunikat: "Jesteś zalogowany") lub w przypadku gdy ktoś nie jest zalogowany, żeby wyświetlał się komunikat: "Nie jesteś zalogowany" nad lub pod formularzem.

Chciałbym również, aby to logowanie mogło być zapami8ętanie przez komunikat "zapamiętaj mnie".

Będę wdzięczny za pomoc.


RE: Problem ze skryptem logowania - Pedro84 - 11-10-2010

Tam gdzie chcesz zrobić przekierowanie!

Pomocy nie szukasz, zero cholera inwencji!


RE: Problem ze skryptem logowania - R_Rafalsky - 11-10-2010

Człowieku wszystkiego za Ciebie nie zrobimy. Masz przecież sesję, która pamięta logowanie każdego użytkownika z osobna. Wystarczy ją wykorzystać. Na dowolnej stronie sprawdzasz sesję kto jest zalogowany i wyświetlasz komunikat. Zwykły if nic więcej Smile Na komunikaty zwrotne możesz wykorzystać zmienne globalne GET, POST i SESSION. Więcej szczegółów dowiesz się od wujka google.


RE: Błąd w skrypcie logowania - prośba o pomoc - neneth - 12-10-2010

Witam, zmieniłem trochę kod, ale dalej nic się nie zmienia. Po zalogowaniu mam białe okno i nic więcej. Wkleję jeszcze raz kod i może ktoś pomoże mi go naprawić do końca.

plik conn.php

Kod PHP:
<?php
session_start
();
ob_start();

if (
$_SESSION['login'] < 0)
 {
echo 
"Jesteś zalogowany...";
header("Location: strona_glowna.php");
exit;
}
    
$host='localhost'//Tu moĹźliwe Ĺźe bÄ_dziesz musiaĹ_ wpisaÄ_ innego hosta ale czÄ_sto jest to wĹ_aĹ_nie localhost
    
$login='.........................';
    
$haslo='...........................';
    
$nazwaBazy='.............................';
    
$lacz=mysql_connect($host$login$haslo);
    if (
$lacz==false) {
     
    die(
'Brak polaczenia z serwerem');
     
    }
     
    
mysql_select_db($..................................) or die(mysql_error());
    
        
mysql_close();
    
ob_end_flush(); 

plik login.php

Kod PHP:
if (isset($_POST['konto']) and isset($_POST['password']) )

{

require(
'conn.php');

$konto=mysql_real_escape_string(trim($_POST['konto']));

$password=mysql_real_escape_string(trim($_POST['password']));

if (
$konto!="" and $password!="")

{

$password sha1(md5($password));

$zapytanie="SELECT id FROM user WHERE login='$konto' and password ='$password'";

$temp=mysql_query($zapytanie) or die("WystÄ_piĹ_ bĹ_Ä_d");

$ile=mysql_num_rows($temp);

$temp=mysql_fetch_array($temp);

$id=$temp['id'];



if (
$ile==1)

{

$_SESSION['user_id']=$id;

$_SESSION['login']=$konto;

echo(
'ZostaĹ_eĹ_ zalogowany. ');

}

else echo (
'PodaĹ_eĹ_ zĹ_e dane. Kliknij wstecz, aby sprĂłbowaÄ_ ponownie.');

}

}



ob_end_flush(); 

Z góry dziękuję za pomoc.


RE: Problem ze skryptem logowania - R_Rafalsky - 12-10-2010

Najpierw przekonwertuj pliki na UTF-8 bez BOM za pomocą Notepad++ (Format -> Konwertuj na UTF-8 bez BOM) Często pusta strona jest wynikiem nieprawidłowego kodowania, a u Ciebie te złe kodowanie widać.

I pokaż źródło pliku strona_glowna.php