Deotho
13.05.2012, 18:33:57
<?php
include ("config/db.php");
if (!isset($_SESSION['login'])) { if ($_POST['submit']) {
$haslo = md5($_POST['haslo']);
$db = mysql_query("SELECT * FROM users WHERE login='$login' and haslo='$haslo' and active=0");
echo '<span class="blad">Nie aktywowałeś jeszcze swojego konta.</span>'; }
$db = mysql_query("SELECT * FROM users WHERE login='$login' and haslo='$haslo' and active=1");
$_SESSION["login"] = $informacja["login"];
header('Location: index.php '); } else {
echo '<span class="blad">Podane dane są nieprawidłowe!</span>'; }
}
} else {
header('Location: index.php'); }
if ($_GET["wylogowanie"] == "tak") {
header('Location: index.php'); }
?>
Powyżej prezentuje login.php , a poniżej index.php
<?php
include('config/db.php');
?>
<?php include('templates/header.php'); ?>
<?php
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="ContentType" content="text/html; charset=utf-8" />
</head>
<body>
<form action="login.php" method="post">
<table>
<input type="hidden" name="submit" value="TRUE" />
<tr>
<td>Login:</td>
<td><input type='text' name='login' maxlength='20'></td>
</tr>
<tr>
<td>Hasło:</td>
<td><input type='password' name='haslo' maxlength='30'></td>
</tr>
<tr>
<td><input type='submit' value='Zaloguj się'></td>
</tr>
</table>
</form>
</body>
</html>
<?php include('templates/footer.php'); ?>
Krótko mówiąc. Gdy jestem na stronie główne(index.php) i wpisuje dane przenosi mnie na login.php i mam białą stronę chodź mam ustawione przekierowania na stronę główna. Oznacza to, że coś nie działa. Dodałem formularz do login.php i gdy wpisuje tam dane wyskakuje błąd ' Podane dane są nieprawidłowe ' choć są dobre i konto mam nieaktywne, a więc powinno wyskoczyć ' Aktywuj swoje konto '.
Niktoś
13.05.2012, 18:44:26
Spróbuj zmienić
if (!isset($_SESSION['login'])) {
na
if (isset($_SESSION['login'])) {
Możesz mieć sesje aktywną, albo zamknij i włącz przeglądarkę i wtedy spróbuj.
Deotho
13.05.2012, 19:01:49
Teraz nie przekierowuje na login.php, ale też nie wyświetla żadnej informacji i nie loguje.
Niktoś
13.05.2012, 19:16:20
Ma być :
Cytat
if (!isset($_SESSION['login'])) {
Kazałem Ci zmienić, aby stwierdzić czy miałeś aktywną sesję i tym samym sprawdzić jak się zachowa skrypt.
Spróbuj dodać za każdym przekierowaniu komendę exit :
header('Location: index.php ');
Deotho
13.05.2012, 19:23:33
Wyskoczyło, że mam nieprawidłowe dane i przekierowało na login.php
Nie powinno przekierować na login.php + wyświetlić ' Proszę aktywować konto '
Już nie wiem o co może chodzić.
<?php
include ("config/db.php");
if (!isset($_SESSION['login'])) { if ($_POST['submit']) {
$haslo = md5($_POST['haslo']);
$db = mysql_query("SELECT * FROM users WHERE login='$login' and haslo='$haslo' and active=0");
echo '<span class="blad">Nie aktywowałeś jeszcze swojego konta.</span>'; }
$db = mysql_query("SELECT * FROM users WHERE login='$login' and haslo='$haslo' and active=1");
$_SESSION["login"] = $informacja["login"];
header('Location: index.php '); } else {
echo '<span class="blad">Podane dane są nieprawidłowe!</span>'; }
}
} else {
header('Location: index.php'); }
if ($_GET["wylogowanie"] == "tak") {
header('Location: index.php'); }
?>
Lwik
13.05.2012, 19:26:06
<?php
include ("config/db.php");
IF(isset($_SESSION['login'])) {header('Location: profil.php'); }
if ($_POST['login']) {
$haslo = md5($_POST['haslo']);
$db = mysql_query("SELECT * FROM users WHERE login='".$login."' and haslo='".$haslo."'");
IF($info['active'] == 0
) die('aktywuj'); IF($info['active'] == 1)
{
$_SESSION["login"] = $info["login"];
header('Location: profil.php ');
}
}else {
echo '<span class="blad">Podane dane są nieprawidłowe!</span>'; }
}
if ($_GET["wylogowanie"] == "tak") {
header('Location: index.php'); }
Powyżej prezentuje login.php , a poniżej index.php
<?php
include('config/db.php');
include('templates/header.php');
?>
<form action="login.php" method="post">
<table>
<tr>
<td>Login:</td>
<td><input type='text' name='login' maxlength='20'></td>
</tr>
<tr>
<td>Hasło:</td>
<td><input type='password' name='haslo' maxlength='30'></td>
</tr>
<tr>
<td><input type='submit' value='Zaloguj się'></td>
</tr>
</table>
</form>
<?php include('templates/footer.php'); ?>
tak na szybko, powinno dzialać.
Deotho
13.05.2012, 19:36:13
Niestety nadal wyrzuca błąd ' Podaj prawidłowe dane ' choć mam prawidłowe i konto nadal nieaktywne.
Brak informacji o nieaktywnym koncie. No i przekierowuje na login.php
.
Niktoś
13.05.2012, 19:37:03
Wygląda na to jakbyś źle wprowadzał pary -login ,hasło.
Deotho
13.05.2012, 19:41:13
Chodzi o to, że wszystko wprowadzam dobrze.
Powinno wyskoczyć, że nie aktywowalem emailu, bo mam nieaktywne konto - specjalnie tak zrobiłem.
Niktoś
13.05.2012, 19:45:11
Sprawdź:
$haslo = md5($_POST['haslo']);
To nic nie kosztuje i porównaj z tym co masz w bazie danych.Tylko zakomentuj funkcje // header
Deotho
13.05.2012, 19:49:34
na końcu w login.php mam:
Kod
f3b
a w bazie
Kod
f
chodzi o haslo
Niktoś
13.05.2012, 19:52:45
No i widzisz teraz dlaczego nie działa.
f to użytkownik 3b to hasło?
Deotho
13.05.2012, 19:57:55
Już wiem na czym polegał problem. Varchar miałem na 20, a haslo na 22 znaki.
Teraz gdy wpiszę poprawnę dane to przenosi mnie na login.php i widzę napis ' aktywuj '
<?php
include ("config/db.php");
IF(isset($_SESSION['login'])) {header('Location: profil.php'); }
if ($_POST['login']) {
$haslo = md5($_POST['haslo']);
$db = mysql_query("SELECT * FROM users WHERE login='".$login."' and haslo='".$haslo."'");
if ($info['active'] == 0
) die('aktywuj'); if ($info['active'] == 1) {
$_SESSION["login"] = $info["login"];
header('Location: index.php '); echo '<span class="blad">Nie aktywowałeś jeszcze swojego konta.</span>'; }
}else {
echo '<span class="blad">Podane dane są nieprawidłowe!</span> <br>'; }
}
if ($_GET["wylogowanie"] == "tak") {
header('Location: index.php'); }
?>
Nie powinno przekierowywać na login.php tylko wyświetlać informacje na stronie głównej.
No i oczywiście logować.
Deotho
13.05.2012, 20:09:09
Wyświetla, że nie aktywowałem konta, ale przenosi niestety na login.php. :/
Niktoś
13.05.2012, 20:13:51
Cytat
if ($info['active'] == 1) {
$_SESSION["login"] = $info["login"];
header('Location: index.php ');
exit;
Skrypt robi to co napisałeś wyżej.W bazie ma on status active 1?Jeśli tak to według tego co wyżej napisałeś - ustawia sesje i robi redirect.
Deotho
13.05.2012, 20:16:48
Mam konto nieaktywne, bo go nie aktywowałem. Chcę, aby informacja o ' Nieaktywnym koncie ' wyświetlała się na stronie głównej podczasz logowania kogoś kto ma nieaktywne konto, bo teraz przekierowuje na login.php i wyświetla.. :/
Niktoś
13.05.2012, 20:25:44
Jak dokonujesz jakiś zmian w skrypcie ,a pracujesz na sesji to każdorazowo wyłączaj i włączaj przeglądarkę, bo nie będziesz widział efektów, gdyż ciągle pracujesz na starej sesji(musisz ją "kilnąć" właśnie przez zamknięcie przeglądarki).
Spróbuj tak zrobić i daj znać.
Deotho
13.05.2012, 20:30:55
login.php
<?php
include ("config/db.php");
IF(isset($_SESSION['login'])) {header('Location: index.php'); }
if ($_POST['login']) {
$haslo = md5($_POST['haslo']);
$db = mysql_query("SELECT * FROM users WHERE login='".$login."' and haslo='".$haslo."'");
if ($info['active'] == 0
) die('Nie aktywowałeś jeszcze swojego konta.'); if ($info['active'] == 1) {
$_SESSION["login"] = $info["login"];
header('Location: index.php '); echo '<span class="blad">Nie aktywowałeś jeszcze swojego konta.</span>'; }
} else {
echo '<span class="blad">Podane dane są nieprawidłowe!</span> <br>'; }
}
if ($_GET["wylogowanie"] == "tak") {
header('Location: index.php'); }
?>
Wyłączyłem i włączyłem przeglądarkę, wyczyściłem ciasteczka, a gdy wpisałem dane przekierowało na login.php i wyświetliło informację o nieaktywnym koncie. Cholerka jak to zrobić, aby na głównej wyświetlało :/
Niktoś
13.05.2012, 20:46:14
Cytat
if ($info['active'] == 1) {
$_SESSION["login"] = $info["login"];
header('Location: index.php ');
exit;
echo '<span class="blad">Nie aktywowałeś jeszcze swojego konta.</span>';
}
Wykonuje Ci się ten blok ,tak więc musisz mieć go aktywnego, sprawdź w kolumnie active w bazie danych ,czy nie ma 1 dla tego użytkownika.Poza tym , w tym bloku to ta pogrubiona linijka w ogóle jest niepotrzebna.
Deotho
13.05.2012, 20:49:58
Chyba mnie nie zrozumiałeś.
Chcę, aby na stronie głównej gdy loguje się użytkownik, który ma nieaktywne konto wyświetłało informację ' Nie aktywowałeś konta '.
<?php
include ("config/db.php");
IF(isset($_SESSION['login'])) {header('Location: index.php'); }
if ($_POST['login']) {
$haslo = md5($_POST['haslo']);
$db = mysql_query("SELECT * FROM users WHERE login='".$login."' and haslo='".$haslo."'");
if ($info['active'] == 0
) die('Nie aktywowałeś jeszcze swojego konta.'); if ($info['active'] == 1) {
$_SESSION["login"] = $info["login"];
header('Location: index.php '); }
} else {
echo '<span class="blad">Podane dane są nieprawidłowe!</span> <br>'; }
}
if ($_GET["wylogowanie"] == "tak") {
header('Location: index.php'); }
?>
Fakt ta linijka była zbędna więc ją usunąłem. Konto na, które się loguje ma active=0 // czyli nieaktywne. Gdy się loguje przenosi na login.php i wyświetla info o Nie aktywowanym koncie, a ma to wyświetlać na głównej.
O to mi tylko chodzi..
Niktoś
13.05.2012, 21:05:05
Możesz zrobić taki myk:
if ($info['active'] == 0) {
header('Location: index.php?active=0'); }
W pliku index.php gdzieś na początku skryptu:
if((isset($_GET["active"]))&&($_GET["active"]=="0")){ echo '<span class="blad">Nie aktywowałeś jeszcze swojego konta.</span>'; }
Deotho
13.05.2012, 21:09:02
Cytat
Parse error: syntax error, unexpected T_BOOLEAN_AND in D:\Program Files\WebServ\httpd\index.php on line 6
if (isset($_GET["active"])) && ($_GET["active"]=="0")) { echo '<span class="blad">Nie aktywowałeś jeszcze swojego konta.</span>'; }
)
Nie działa hmm.
Niktoś
13.05.2012, 21:13:36
Dałem nawiasy okrągłe ,zamiast klamer-poprawiłem.Musisz także myśleć.
Cytat
Parse error: syntax error, unexpected T_BOOLEAN_AND in D:\Program Files\WebServ\httpd\index.php on line 6
Brak ci nawiasu na początku.
Deotho
13.05.2012, 21:20:34
if ($_POST['login']) {
$haslo = md5($_POST['haslo']);
$db = mysql_query("SELECT * FROM users WHERE login='".$login."' and haslo='".$haslo."'");
if ($info['active'] == 0) {
header('Location: index.php?active=0'); }
if ($info['active'] == 1) {
$_SESSION["login"] = $info["login"];
header('Location: index.php '); }
} else {
}
}
Chciałem zrobić tak samo jak Ty z Nie aktywnym kontem i coś nie wychodzi
if ((isset($_GET["active"])) && ($_GET["active"]=="0")) { echo '<span class="blad">Nie aktywowałeś jeszcze swojego konta.</span>'; }
if ((isset($_GET["active"])) && ($_GET["active"]=="1")) { echo '<span class="blad">Podane dane są nieprawidłowe!</span>'; }
Niktoś
13.05.2012, 21:30:47
Nie przesadzaj z tymi pomógł-raz wystarczy.
Poczytaj o metodzie przesyłu dany $_GET i generowaniu linków -a będziesz wiedział jak to zrobić ,ja ci podałem prosty przykład(myk), przeanalizuj to i popatrz także na inne przykłady z googla.
Deotho
13.05.2012, 21:38:17
Dziękuje za pomoc wszystko już działa.
Plusy przyznane.
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.