Ocena wątku:
- 0 głosów - średnia: 0
- 1
- 2
- 3
- 4
- 5
Problem ze skryptem logowania
|
Liczba postów: 56
Liczba wątków: 21
Dołączył: 07-04-2010
Reputacja:
0
08-10-2010, 15:17
(Ten post był ostatnio modyfikowany: 08-10-2010, 21:26 przez Dhofca.)
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.
Liczba postów: 340
Liczba wątków: 38
Dołączył: 28-04-2010
Reputacja:
15
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ę
Any sufficiently advanced technology is indistinguishable from magic.
Liczba postów: 2,587
Liczba wątków: 2
Dołączył: 03-04-2010
Reputacja:
58
Używaj BBCode!
Poza tym:
Kod: $_SESSION['login']=$konto;
gdzie konto jest nazwą użytkownika.
A potem to sprawdzasz:
Kod: if ($_SESSION['login'] > 0) {
Liczba postów: 56
Liczba wątków: 21
Dołączył: 07-04-2010
Reputacja:
0
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 .
Liczba postów: 340
Liczba wątków: 38
Dołączył: 28-04-2010
Reputacja:
15
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ę
Any sufficiently advanced technology is indistinguishable from magic.
Liczba postów: 56
Liczba wątków: 21
Dołączył: 07-04-2010
Reputacja:
0
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.
Liczba postów: 2,587
Liczba wątków: 2
Dołączył: 03-04-2010
Reputacja:
58
Tam gdzie chcesz zrobić przekierowanie!
Pomocy nie szukasz, zero cholera inwencji!
Liczba postów: 340
Liczba wątków: 38
Dołączył: 28-04-2010
Reputacja:
15
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  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ę
Any sufficiently advanced technology is indistinguishable from magic.
Liczba postów: 56
Liczba wątków: 21
Dołączył: 07-04-2010
Reputacja:
0
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.
Liczba postów: 340
Liczba wątków: 38
Dołączył: 28-04-2010
Reputacja:
15
12-10-2010, 13:19
(Ten post był ostatnio modyfikowany: 12-10-2010, 13:21 przez R_Rafalsky.)
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ę
Any sufficiently advanced technology is indistinguishable from magic.
|
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
|
Użytkownicy przeglądający ten wątek:
|
|
Sponsorzy i przyjaciele
|
|
|