Turson
23.03.2011, 17:28:33
Jestem w trakcie pisania prostej strony z funkcją logowania, rejestracji, dodawania wpisów do księgi gości, po zalogowaniu.
Index.php :
http://wklej.org/id/498680/Rejestracja.php :
http://wklej.org/id/498681/News.php
<?php
$nick = $_SESSION['login'];
$_SESSION['login'] = $row['login'];
if($_GET["wyloguj"]=="tak"){$_SESSION["zalogowany"]=0;echo "Zostałeś wylogowany z serwisu";}
if($_SESSION["zalogowany"]!=1){
if(!empty($_POST["login"]) && !empty($_POST["haslo"])){ echo "Zalogowano poprawnie. <a href='index.php'>Przejdź na stronę główną</a>"; echo '<hr size=1 width=100%><br><br>Witaj, nick - <b>' .$_POST["login"]. '</b>'; $_SESSION["zalogowany"]=1;
}
else echo ShowLogin
("Podano złe dane!!!"); }
else ShowLogin();
}
else{
Jestes zalogowany! / <a href=index.php?wyloguj=tak>Wyloguj się</a><br>
Twój nick to <h1>'.$_SESSION['login'].'</h1>'?>
<?php
}
?>
Właśnie tutaj miałby się wyświetlić nick.
I dodanie wpisu do ksiegi gosci:
<?PHP
mysql_connect("localhost", "root", "")or
die("Nie można nawiązać połączenia z bazą"); //połączenie z bazą danych $wpis = ($_POST["wpis"]);
$nick = $_SESSION['login'];
// dodajemy rekord do bazy
$ins = @mysql_query("INSERT INTO ksiega SET wpis='$wpis', autor='$nick'");
if($ins) echo "Komentarz zostal poprawnie dodany do ksiegi gosci."; else echo "Blad! Nie udalo sie :c"; ?>
<br><a href="index.php?id=ksiega">Powrot</a>
Dodatkowo jak widać starałem sie rowniez aby nick byl dodawany do bazy przy wpisie..
marius94
23.03.2011, 17:29:43
?
albo jak juz przypisales do zmiennej $ nick to
Turson
23.03.2011, 17:39:20
Nie daje to nic
Daiquiri
23.03.2011, 17:43:06
Po co Ci dwa razy session_start() w index.php? Gdzie masz przypisanie danych do $_SESSION['login'];?
W news masz chyba odwrotną kolejność:
$nick = $_SESSION['login'];
$_SESSION['login'] = $row['login'];
Turson
23.03.2011, 17:49:08
w index mam przypisanie $nick = $_SESSION['login'];
Daiquiri
23.03.2011, 17:53:01
Ok masz $nick = $_SESSION['login'], ale gdzie masz zdefiniowaną wartość $_SESSION['login']?
Turson
23.03.2011, 17:56:41
Dałem do news
$_SESSION['login'] = $row['login'];
$nick = $_SESSION['login'];
ale nie wiem czy o to chodzi ;/
Daiquiri
23.03.2011, 18:04:21
Ok, w takim układzie sprawdź czy echo $row['login']; wyświetli Ci cokolwiek.
Turson
23.03.2011, 18:09:37
W news.php? Jeśli tak, to nie wywala nic.
Daiquiri
23.03.2011, 18:17:27
Bo albo ja czegoś nie rozumiem albo Ty robisz tak:
$_SESSION['login'] = $row['login']; // przypisujesz do $_SESSION['login'] wartość $row['login'] ale skoro $row['login'] jest pusty to masz również pusto w $_SESSION['login'];
$nick = $_SESSION['login']; // teraz przypisujesz wartość pustego $_SESSION['login'] do $nick
Innymi słowy nigdzie nie masz wartości z loginem, czegoś co po echo $zmienna wyświetli Ci jakąś wartość.
Turson
23.03.2011, 18:19:03
Myślisz o przypisaniu POST z formularza pierw do zmiennej $nick a potem ze zmiennej SESSION?
Daiquiri
23.03.2011, 18:23:08
Tak, chociaż szczerze powiedziawszy zbyt dokładnie w Twój kod nie zerkałam. Jednak widzę, że wszystkie dotychczas omawiane zmienne masz puste, więc możesz przypisać odpowiednią wartość do $_SESSION['login'] zaraz po tym jak użytkownik zostanie poprawnie zalogowany czy zarejestrowany

.
Turson
23.03.2011, 18:25:15
Wyszedł mi kod
<?php
$nick = $_POST['login'];
if($_GET["wyloguj"]=="tak"){$_SESSION["zalogowany"]=0;echo "Zostałeś wylogowany z serwisu";}
if($_SESSION["zalogowany"]!=1){
if(!empty($_POST["login"]) && !empty($_POST["haslo"])){ echo "Zalogowano poprawnie. <a href='index.php'>Przejdź na stronę główną</a>"; echo '<hr size=1 width=100%><br><br>Witaj, nick - <b>' .$_POST["login"]. '</b>'; $_SESSION["zalogowany"]=1;
$nick = $_SESSION['login'];
}
else echo ShowLogin
("Podano złe dane!!!"); }
else ShowLogin();
}
else{
Jestes zalogowany! / <a href=index.php?wyloguj=tak>Wyloguj się</a><br>
Twój nick to<h1>'; echo $_SESSION['login'] ?> <?php
}
?>
I dalej pusto niestety
emajl22
23.03.2011, 18:28:10
A zobacz co masz w $_POST['login']
Daiquiri
23.03.2011, 18:36:17
Ale zrób najpierw echo przed przypisaniem, żeby wiedzieć że w zmiennych coś się akurat znajduje.
$nick = $_SESSION['login']; teraz przypisujesz wartość $_SESSION['login'] do $nick...
Turson
23.03.2011, 18:47:28
Dokładnie nie czaje
$nick = $_SESSION['login'];
}
else echo ShowLogin
("Podano złe dane!!!"); }
else ShowLogin();
}
else{
Jestes zalogowany! / <a href=index.php?wyloguj=tak>Wyloguj się</a><br>
Twój nick to<h1>'; echo $_SESSION['login'] $_SESSION['login'] = $nick
jesli tak to nie dziala
Parse error: syntax error, unexpected T_VARIABLE, expecting ',' or ';' in D:\Xampp\xampp\htdocs\php\news.php on line 23
Daiquiri
23.03.2011, 18:50:25
Forum to nie parser. Przecież nie masz średnika po echo $_SESSION['login'] i $_SESSION['login'] = $nick!
Mam wrażenie, że mylą Ci się strony przy przypisywaniu. Jeżeli $zmienna1 = "Ala" a $zmienna2 = "kot", to w przypadku gdy zrobimy : $zmienna1 = $zmienna2, po wyświetleniu echo $zmienna1 zobaczymy "kot".
To, co Ty musisz zrobić to znaleźć zmienną w której masz zapisany login, np. zaraz po wysłaniu formularza masz ją w $_POST['login'], jednak na innej stronie $_POST['login'] nie będzie miało tej wartości. Możesz rozpocząć sesję również w rejestracja.php i tam przypisać wartość $_POST do $_SESSION ($_SESSION['login'] == $_POST['login']).
Turson
23.03.2011, 18:51:46
Średnik i tak nie daje nic, bo nie wyświetla nicku w tej kompozycji
Daiquiri
23.03.2011, 19:04:51
Brak średnika powodował parse error, a za problemy z parserem zamykamy zwykle tematy.
Powtórzę się raz jeszcze jeżeli chcesz przypisać cokolwiek do $_SESSION['login'] korzystając z innej zmiennej np. $_SESSION['login'] = $zmienna, to musisz się upewnić, że $zmienna nie jest pusta.
Turson
23.03.2011, 19:55:33
Więc co $nick przypisuję $_POST['login'] // wtedy już $nick nie jest pusty bo jest przypisany nazwą loginu z formularza
następnie wg. zaleceń daję echo i na koniec do niepustego $nick przypisuję $_SESSION['login']
wychodzi
$nick = $_POST['login'];
echo 'bla bla, twoj nick to ' .$nick. ''; $_SESSION['login'] = $nick
Jeśli dobrze rozumiem i robię to nic z tego nie wynika
Daiquiri
23.03.2011, 20:19:12
Brakuje Ci średnika na końcu. Jeżeli masz
$nick = $_POST['login'];
echo 'bla bla, twoj nick to ' .$nick. ''; // i tutaj wyświetla Ci się wartość zmiennej $nick $_SESSION['login'] = $nick;
Tylko pamiętaj, że przy każdym wywołaniu tej części kodu, zmienne będą się nadpisywać.
Zaczynam się gubić, gdzie Ty wyświetlasz ten $_SESSION['login'] i czy go po drodze nie nadpisujesz.
Turson
23.03.2011, 20:42:51
Tak cały news.php wyglada
<?php
if($_GET["wyloguj"]=="tak"){$_SESSION["zalogowany"]=0;echo "Zostałeś wylogowany z serwisu";}
if($_SESSION["zalogowany"]!=1){
if(!empty($_POST["login"]) && !empty($_POST["haslo"])){ echo "Zalogowano poprawnie. <a href='index.php'>Przejdź na stronę główną</a>"; echo '<hr size=1 width=100%><br><br>Witaj, nick - <b>' .$_POST["login"]. '</b>'; $_SESSION["zalogowany"]=1;
}
else echo ShowLogin
("Podano złe dane!!!"); }
else ShowLogin();
}
else{
$nick = $_POST['login'];
Jestes zalogowany! / <a href=index.php?wyloguj=tak>Wyloguj się</a><br>
Twój nick to<h1>';
$_SESSION['login'] = $nick;
echo $_SESSION['login']; ?> <?php
}
?>
niby $_SESSION['login'] występuje jako tako raz
Daiquiri
23.03.2011, 20:49:51
Dodaj: $_SESSION['login'] = $_POST['login'] pod: $_SESSION["zalogowany"]=1; i wywal wszystkie $_SESSION['login'] = $nick;
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.