Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z If'em
Forum PHP.pl > Forum > Przedszkole
Flapper
Mam taki oto kod:
  1. <?php 
  2. session_register("zalogowany");
  3.  
  4. if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;
  5.  
  6. require "connection.php";
  7. connection();
  8.  
  9. function ShowLogin($komunikat=""){
  10. if($_SESSION["zalogowany"] == 0)
  11. {
  12. echo "$komunikat<br>";
  13. echo "<form action='index.php' method=post>";
  14. echo "Login: <input type=text name=login><br>";
  15. echo "Hasło: <input type=text name=haslo><br>";
  16. echo "<input type=submit value='Zaloguj!'>";
  17. echo "</form>";
  18. echo "Jeśli nie jesteś zarejestrowany, <a href='index.php?site=register'>Zarejestruj sie tutaj</a>";
  19. }
  20. else
  21. { 
  22. $id_gracza = $_SESSION["zalogowany"];
  23. $wynik = mysql_query("SELECT * FROM `char` WHERE ID = '$id_gracza'");
  24. while($wynik and $pola = mysql_fetch_array($wynik))
  25. {
  26.  $imie=$pola["name"];
  27.  $typ=$pola["type"];
  28. }
  29. echo "Zalogowany jako $imie<br>";
  30. echo "<a href='index.php?wyloguj=tak'>wyloguj się</a>";
  31. }
  32. }
  33.  
  34. ?>
  35. <html>
  36. <head>
  37. <title>Chaos Theory Online</title>
  38. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
  39. <link rel="Stylesheet" type="text/css" href="style.css" />
  40. </head>
  41. <body>
  42. <center>
  43. <div id="top">
  44.  
  45.  
  46. <div id="kolumna1">
  47. <div id="top1">
  48. </div>
  49. <div id="mid1">
  50. <a href='index.php'>-Strona główna</a>
  51. </div>
  52.  </div>
  53.  
  54.  
  55.  <div id="kolumna2">
  56. <div id="top2">
  57. </div>
  58. <div id="mid2">
  59. <pre><?php
  60. if($_GET[site] != '')
  61. {
  62. include(''.$_GET[site].'.htm');
  63. }
  64. else
  65. {
  66. include('main.htm');
  67. }
  68. ?>
  69. </div>
  70. </div>
  71.  
  72.  
  73. <div id="top3">
  74. <br>
  75. <br>
  76. <br>
  77. <br>
  78.  <?php
  79.  
  80. if($_GET["wyloguj"]=="tak"){$_SESSION["zalogowany"]=0;echo "Zostałeś wylogowany z serwisu";}
  81. if($_SESSION["zalogowany"] == 0){
  82. if(!empty($_POST["login"]) && !empty($_POST["haslo"])){
  83. $haselko=$_POST["haslo"];
  84. $loginn=$_POST["login"];
  85. if(mysql_num_rows(mysql_query("select * from `char` where name = '".htmlspecialchars($_POST["login"])."' AND pass = '".htmlspecialchars(md5($_POST["haslo"]))."'"))){
  86. echo "Zalogowano poprawnie.<br>";
  87. echo "Zalogowany jako $loginn<br>";
  88. echo "<a href='index.php?wyloguj=tak'>wyloguj się</a>";
  89. $wynik = mysql_query("SELECT * FROM `char` WHERE name = '$loginn'");
  90.  
  91. while($wynik and $pola = mysql_fetch_array($wynik))
  92. {
  93. $_SESSION["zalogowany"]=$pola["ID"];
  94. }
  95. }
  96. else echo ShowLogin("Podano złe dane!!!");
  97. }
  98. else echo ShowLogin();
  99. }
  100. ?>
  101. </div>
  102.  
  103. <div id="stopka">
  104. <?
  105. include('Stopka.txt');
  106. ?>
  107. </div>
  108. </div>
  109. </center>
  110. </body>
  111. </html>

Mój problem polega na tym że po zalogowaniu powinien pokazywać się tekst: "zalogowany jako $imie" Wylogowywanie itp. tymczasem po kazuje sięono po zalogowaniu ale kiedy zaloguję się i kliknę np. na Strona główna albo odświeżę stronę okienko robi się puste. Co jest nie tak?
Mlodycompany
jak dla mnie
  1. <?php
  2. echo "Zalogowany jako $imie<br>";
  3. echo "<a href='index.php?wyloguj=tak'>wyloguj się</a>";
  4. ?>

powinno sie znajdować w pętli, to jest raz. Dwa, zrób funkcje sprawdzająca dane i bedziesz ja wywoluwal kiedy posty z forma nie beda puste. ja mam tak zrobione i dziala elegancko.
  1. <?php
  2. function login($user, $pass){
  3. $result = mysql_query("SELECT * FROM `users` WHERE `login` = '".$user."' AND `pass` = '".$pass."'");
  4. while($row = mysql_fetch_array($result)){
  5. if($row["login"] == $user && $row["pass"] == $pass){
  6. $_SESSION['zalogowany'] = 1;
  7. $_SESSION['login'] = $row["login"];
  8. }
  9. }
  10. }
  11. if(!empty($_POST['login']) && !empty($_POST['pass'])){
  12. login($_POST['login'], $_POST['pass'])
  13. }
  14. ?>

Powinno działać logowanie tylko sobie musisz pozmieniac dane typu tabela itp. wyswietlanie loginu powinno juz działac na innych stronach. Jeżeli nie bedzie działało to napisz to napisze ci lepszy bo ten na poczekaniu robilem
marcio
  1. <?php
  2. echo "Zalogowany jako $imie<br>";
  3. echo "<a href='index.php?wyloguj=tak'>wyloguj się</a>";
  4. ?>

Cytat
powinno sie znajdować w pętli,

Z jakiej racji??

  1. <?php
  2. if($_GET["wyloguj"]=="tak"){$_SESSION["zalogowany"]=0;echo "Zostałeś wylogowany z serwisu";}
  3. ?>

A gdzie niszczy sesje??

  1. <?php
  2. if(mysql_num_rows(mysql_query("select * from `char` where name = '".htmlspecialchars($_POST["login"])."' AND pass = '".htmlspecialchars(md5($_POST["haslo"]))."'"))){
  3. ?>

Po co ci tam htmlspecialchars() to jest sql jak cos to addslashes()/mysql_real_escape_string()

  1. <?php
  2. while($wynik and $pola = mysql_fetch_array($wynik))
  3. {
  4. $_SESSION["zalogowany"]=$pola["ID"];
  5. }
  6. ?>

Jako ze pierwszy raz widze taka konstrukcje nie wydaje mi sie ona dobra jesli tak nie jest to zwracam honor
Mlodycompany
@marcio ale powiedzmy szczerze. ten skrypt jest zle wykonany i dlatego dane sie nie wyswietlaja na innej stronie. napisalem skrypt który działa na 100%, ale jak sie jeszcze zastanowilem to powiem autorowi ze na kazdej stronie ma byc session_start() bo wtedy wyswietla pliki sesji ktorej nie ma tongue.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.