Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Problem ze skryptem logowania
#1
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.
Odpowiedz
#2
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ć.
Jak pomogłem daj '+'. To nie boli, a ja mam satysfakcję Smile

Any sufficiently advanced technology is indistinguishable from magic.
Odpowiedz
#3
Używaj BBCode!

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

A potem to sprawdzasz:
Kod:
if ($_SESSION['login'] > 0) {
Odpowiedz
#4
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 .
Odpowiedz
#5
Kod PHP:
die("Wyst?pi? b??d"); 
Strona kodowa chyba niepoprawna skoro znaki gubisz.

Przekierowanie robisz tak:
Kod PHP:
header("Location: index.php"); 
Jak pomogłem daj '+'. To nie boli, a ja mam satysfakcję Smile

Any sufficiently advanced technology is indistinguishable from magic.
Odpowiedz
#6
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.
Odpowiedz
#7
Tam gdzie chcesz zrobić przekierowanie!

Pomocy nie szukasz, zero cholera inwencji!
Odpowiedz
#8
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.
Jak pomogłem daj '+'. To nie boli, a ja mam satysfakcję Smile

Any sufficiently advanced technology is indistinguishable from magic.
Odpowiedz
#9
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.
Odpowiedz
#10
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
Jak pomogłem daj '+'. To nie boli, a ja mam satysfakcję Smile

Any sufficiently advanced technology is indistinguishable from magic.
Odpowiedz


Podobne wątki…
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Problem ze skryptem na republika.pl marecky 4 3,518 16-12-2011, 14:10
Ostatni post: marecky
  Problemy ze skryptem na dbv.pl Dawid1346 2 2,613 24-10-2011, 17:27
Ostatni post: Dawid1346
  Problem ze skryptem logowania. Lampek 0 1,474 23-08-2011, 21:00
Ostatni post: Lampek
  Banner z oknem do logowania borys24 2 3,246 14-06-2011, 01:33
Ostatni post: borys24
  Problem ze skryptem messi19125 12 7,874 26-05-2011, 22:32
Ostatni post: messi19125

Skocz do:


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