Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kilka błędów PHP.
Forum PHP.pl > Forum > PHP
Akkarin15
Witam. Zacząłem robić stronę www na której postanowiłem zastosować system logowania(bez rejestracji narazie).
  1. <?php
  2.  
  3.  
  4. require("konfiguracja.php");
  5. $db = mysql_connect($dbhost, $dbuser, $dbpassword);
  6. mysql_select_db($dbdatabase, $db);
  7. if($_POST['submit']) {
  8. die();
  9. $sql = "SELECT * FROM loginy WHERE nazwa_uzytkownika = '" .
  10. $_POST['nazwa_uzytkownika'] . "' AND haslo = '" . $_POST['haslo'] . "';";
  11.  
  12. $result = mysql_query($sql);
  13. $numrows = mysql_num_rows($result);
  14.  
  15. if($numrows == 1) {
  16. $row = mysql_fetch_assoc($result);
  17. session_register("USERNAME");
  18. session_register("USERID");
  19.  
  20. $_SESSION['USERNAME'] = $row['nazwa_uzytkownika'];
  21. $_SESSION['USERID'] = $row['id'];
  22.  
  23. header("Location: " . $config_basedir);
  24. }
  25. else {
  26. header("Location: " . $config_basedir . "/logowanie.php?error=1");
  27. }
  28. }
  29. else {
  30.  
  31. if($GET['error']) {
  32. echo "Nie zalogowałeś się, spróbuj ponownie dude!";
  33. }
  34. ?>
  35. <form action="<?php echo $SCRIPT_NAME ?>" method="post">
  36.  
  37. <table>
  38. <tr>
  39. <td>Nazwa użytkownika</td>
  40. <td><input type="text" name="nazwa_uzytkownika" /></td>
  41. </tr>
  42. <tr>
  43. <td>Hasło</td>
  44. <td><input type="password" name="haslo" /></td>
  45. </tr>
  46. <tr>
  47. <td></td>
  48. <td><input type="submit" name="submit" valvue="Zaloguj!"></td>
  49. </tr>
  50. </table>
  51. </form>
  52. <?php
  53. }
  54. require("");
  55. ?>

W miarę poprawiłem błędy ale wyskakują 3 błędy.

Fatal error: main() [function.require]: Failed opening required '' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/sites/yoyo.pl/d/i/diablico/logowanie1.php on line 55
ok naprawiłem tamte 2 błędy został ostatni ; / W tamtych chodziło ,że źle wypełniłem konfiguracje.php
Ormin
co robi
Kod
require("");


Na końcu?

No i:
Kod
if($_POST['submit']) {
die();


Cały kod po tym aż do klamry zamykającej się nie ma jak wykonać przez to die(); ...
Akkarin15
Masz racje. Przez przypadek to die() znalazło się tam gdzie nie trzeba i jest równocześnie nie poprawne, a zatem powinno znajdować się zaraz po
  1. $result = mysql_query($sql);

i w poprawnym zapisie wyglądać tak
  1. $result = mysql_query($sql) or die(mysql_error());

Co do twojego drugiego pytania to w miarę znalazłem rozwiązanie. Więc w to require wstawiam stopkę w której jest kto jest autorem tej strony.

Natomiast po wykluczeniu już poprzednich błędów wydawało mi się ,że jest ładnie i sprawnie. Jak już wpisuję poprawnie nick i login to przenosi mnie na główną stronę ale w menu nie zmienia się loguj na wyloguj.
logowanie.php
  1. <?php
  2.  
  3.  
  4. require("konfiguracja.php");
  5. $db = mysql_connect($dbhost, $dbuser, $dbpassword);
  6. mysql_select_db($dbdatabase, $db);
  7.  
  8. if($_POST['submit']) {
  9. $sql = "SELECT * FROM loginy WHERE naza_uzytkownika = '" . $_POST['nazwa_uzytkownika'] . "' AND haslo = '" . $_POST['haslo'] . "';";
  10.  
  11. $result = mysql_query($sql) or die(mysql_error());
  12. $numrows = mysql_num_rows($result);
  13.  
  14. if($numrows == 1) {
  15. $row = mysql_fetch_assoc($result);
  16. session_register("USERNAME");
  17. session_register("USERID");
  18.  
  19. $_SESSION['USERNAME'] = $row['nazwa_uzytkownika'];
  20. $_SESSION['USERID'] = $row['id'];
  21.  
  22. header("Location: " . $config_basedir);
  23. }
  24. else {
  25. header("Location: " . $config_basedir . "/logowanie.php?error=1");
  26. }
  27. }
  28. else {
  29.  
  30. if($_GET['error']) {
  31. echo "Nie zalogowałeś się, spróbuj ponownie dude!";
  32. }
  33. ?>
  34. <form action="<?php echo $SCRIPT_NAME ?>" method="post">
  35.  
  36. <table>
  37. <tr>
  38. <td>Nazwa użytkownika</td>
  39. <td><input type="text" name="nazwa_uzytkownika" /></td>
  40. </tr>
  41. <tr>
  42. <td>Hasło</td>
  43. <td><input type="password" name="haslo" /></td>
  44. </tr>
  45. <tr>
  46. <td></td>
  47. <td><input type="submit" name="submit" valvue="Zaloguj!"></td>
  48. </tr>
  49. </table>
  50. </form>
  51. <?php
  52. }
  53. ?>

wylogowywanie.php
  1. <?php
  2.  
  3.  
  4. require("konfiguracja.php");
  5.  
  6. header("Location: " . $config_basedir);
  7.  
  8. ?>

menu.php
  1. <div id="menu">
  2. <ul>
  3. <li><a href="index.php">Strona Główna</a></li>
  4. <li><a href="kody.php">Kody</a></li>
  5. <li><a href="gry.html">Recenzje</a></li>
  6. <?php
  7.  
  8. if(isset($_SESSION['USERNAME']) == TRUE) {
  9. echo "<li><a href='wylogowywanie.php'>Wylogowywanie</a></li>";
  10. }
  11. else {
  12. echo "<li><a href='logowanie.php'>Logowanie</a></li>";
  13. }
  14. ?>
  15. </ul>
  16. </div>
  17.  
  18. <div id="pisownia">
darophp
powinno być chyba na końcu w wylogowanie.php
Akkarin15
Mogłeś nie zauważyć ale edytowałem post. Więc chodzi o to ,że jak się loguje to przechodzi tam gdzie powinno po poprawnym zalogowaniu ale w menu zamiast wyloguj ciągle jest loguj.
Ormin
Raczej tak powinno być ( ale nie dam główki ):

Kod
if(isset($_SESSION['USERNAME'])) {
Akkarin15
niestety to nic nie zmieniło
TNT
Może
  1. if(strlen($_SESSION['USERNAME']))

?

#EDIT
Dlaczego używasz session_register()? Ta funkcja jest przestarzała - http://pl2.php.net/session_register
Ponadto, nie zaleca się używania $_SESSION z tą funkcją:
Cytat(PHP manual)
If you are using $_SESSION (or $HTTP_SESSION_VARS), do not use session_register(), session_is_registered(), and session_unregister().
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.