Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP] Podwójny panel logowania
Forum PHP.pl > Forum > Przedszkole
Fiox
Problem przedstawia się następująca.

Mam taki panel logowania, i problem polega na tym, że po kliknięciu "zaloguj" przenosi mnie do osobnej, pustej strony, na której znajduje się jedynie ten właśnie panel logowania. Czyli generalnie aby się zalogować potrzeba wpisać i potwierdzić dwa razy login i hasło - najpierw stronie głównej, a potem przenosi cię jeszcze do osobnej podstrony z tym panelem i tam trzeba wpisać po raz drugi. (Teraz to wygląda troche inaczej niż na screenie, ale problem nadal pozostaje ten sam)

Plik index.php który jest zaimportowany do strony głównej funkcją include

  1. <?php
  2.  
  3.  
  4. if (isset($_SESSION['user_id']) and isset($_SESSION['login']))
  5.  
  6. {
  7.  
  8. echo nl2br('Jestes zalogowany.<br /> Twój login to: ');
  9.  
  10. echo $_SESSION['login'];
  11.  
  12. echo nl2br(' <br/> <a href="logout.php">Wyloguj</a>');
  13.  
  14. }
  15.  
  16. else
  17.  
  18. {
  19.  
  20. ?>
  21. <form method="post" action="login.php">
  22. Login: <input type="text" name="login" maxlength="16"><br />
  23. Hasło: <input type="password" name="pass" maxlength="16"><br />
  24. <input type="submit" value="Zaloguj">
  25. <a href="register.php"> Zarejestruj się</a>
  26. </form>
  27. <?php
  28. }
  29. ?>


A tutaj ogólny plik "login.php"


  1. <?php
  2.  
  3.  
  4. if (isset($_POST['konto']) and isset($_POST['password']) )
  5.  
  6. {
  7.  
  8. require('conn.php');
  9.  
  10. $konto=mysql_real_escape_string(trim($_POST['konto']));
  11.  
  12. $password=mysql_real_escape_string(trim($_POST['password']));
  13.  
  14. if ($konto!="" and $password!="")
  15.  
  16. {
  17.  
  18. $password = sha1($password);
  19.  
  20. $zapytanie="SELECT id FROM user WHERE login='$konto' and password ='$password'";
  21.  
  22. $temp=mysql_query($zapytanie) or die("Wystąpił błąd");
  23.  
  24. $ile=mysql_num_rows($temp);
  25.  
  26. $temp=mysql_fetch_array($temp);
  27.  
  28. $id=$temp['id'];
  29.  
  30.  
  31.  
  32. if ($ile==1)
  33.  
  34. {
  35.  
  36. $_SESSION['user_id']=$id;
  37.  
  38. $_SESSION['login']=$konto;
  39.  
  40. echo nl2br('Zostales zalogowany.<br/> <a href="main.php">Kliknij aby powrócić do strony głównej.</a> ');
  41.  
  42. }
  43.  
  44. else echo ('Podales zle dane. Kliknij wstecz aby sprobowac ponownie.');
  45.  
  46. }
  47.  
  48. }
  49.  
  50. else{
  51.  
  52. ?>
  53.  
  54. <html>
  55.  
  56. <body>
  57.  
  58. <form action="login.php" method="post">
  59.  
  60. <strong>Nazwa konta:</strong><input name="konto" type="text" value="" /><br>
  61.  
  62. <strong>Haslo:</strong><input name="password" type="password" value="" /><br>
  63.  
  64. <input type="submit" value="Zaloguj" />
  65.  
  66. </form>
  67.  
  68. </body>
  69.  
  70. </html>
  71.  
  72. <?php
  73.  
  74. }?>


Zrobiłem to w ten sposób, żeby na stronie głównej, gdy jesteśmy zalogowani, pojawiała się jedynie informacja o tym, a gdy nie, to wyświetla nam się formularz do zalogowania. I wszystko działa oprócz tego jednego mankamentu...

Pozdrawiam


snaers
W index.php w 23 linijce zmień LOGIN na KONTO.
Fiox
Trzeba było jeszcze w 24 linijce zmienić "pass" na "password", ale dzięki - leci "pomógł"
marck
Jeśli mogę coś podpowiedzieć to zrób to sobie pseudo - obiektowo. Będzie dużo czytelniej i mniej kłopotu. Jak to zrobić? bardzo prosto.
Robisz sobie dwa małe skrypciki np. index.php i core.php i jedziesz jak z klockami. Oto przykładzik.

core.php
  1. function pokaz_nag(){
  2. echo"<html>"
  3. ."<head>"
  4. ."</head>"
  5. ."<body>"
  6. }
  7.  
  8. function pokaz_stopke(){
  9. echo"</body>"
  10. ."</html>"
  11. }
  12.  
  13. function pokaz_form_login(){
  14. echo"<form action='index.php' method='post'>"
  15. ."<fieldset>"
  16. ."<input name='login'>"
  17. ."<input type='password' name='pass'>"
  18. ."<input type='submit' name='loguj' value='Zaloguj'>"
  19. ."</fieldset></form>";
  20. }
  21.  


A potem dajesz:
index.php

  1. require_once('core.php');
  2.  
  3. //powrót danych z formularza
  4.  
  5. if(isset($_POST['loguj'])){
  6. $login=$_POST['login'];
  7. $pass=$_POST['pass'];
  8. if($login==costam && $pass==costam){
  9. pokaz_nag();
  10. echo"<p>Strona dla zalogowanych</p>";
  11. pokaz_stopke();
  12. }
  13. else{
  14. pokaz_nag();
  15. echo"<p> Pa Pa leszczu</p>";
  16. pokaz_stopke();
  17. }
  18. }
  19.  
  20. pokaz_nag();
  21. pokaz_form_login();
  22. pokaz_stopke();


ot i cała filozofia - funkcje to klocki, możesz nimi budować stronę jak chcesz, możesz sobie wyciągać loginy i hasła z bazy lub zabezpieczyć to coś sesją. Ale na pewno formularz nie wyskoczy ci dwa razy smile.gif
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.