Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/mysql] skypt logowania
Forum PHP.pl > Forum > Przedszkole
nserdon
Napisałem własnie prosty skrypt logowania, ktory niestety nie chce dzialac jak powinien. Oto kod:

mysql.connect.php:
  1. <?php
  2. $connect = mysql_connect('localhost', 'root', 'krasnal')
  3. or die ('Nie można połączyć z bazą danych');
  4.  
  5. or die ('Nie można wybrać bazy');
  6. ?>


index.php:
  1. <?php
  2. include("mysql.connect.php");
  3.  
  4. if(!isset($submit)){
  5. '<form action="index.php" method="Post">
  6. Login: <input type="text" name="login"><br>
  7. Pass: <input type="password" name="pass"><br>
  8. <input type="submit" name="submit" value="loguj!"><br>
  9. </form>';}
  10.  
  11. if(isset($submit)){
  12. $login = $POST['login'];
  13. $pass = $POST['pass'];
  14. $za1 = "Select `nick`, `pass` FROM `adminuser` WHERE `nick`='$login' AND `pass`='$pass'";
  15. $wyk1 = mysql_query($za1);
  16. $row = mysql_fetch_row($wyk1);
  17. if($login == $row[0] && md5($pass) == $row[1]){
  18. $SESSION['login'] = $login;
  19. $SESSION['pass'] = md5($pass);
  20. echo 'dobre logowanie';
  21. echo $login;
  22. }
  23. else{
  24. echo 'zle dane';
  25. }
  26. }
  27. mysql_close($connect);
  28.  
  29. ?>


Proszę o pomoc. Wie ktoś z państwa dlaczego nie chce to działać?

Pozdrawiam i z góry dziękuje,
nserdon.
Chemiq
poninieneś mieć:

  1. <?php
  2. if (!isset($_POST['submit'])) { /* form */ }
  3. if (isset($_POST['submit'])) { /* to co masz w skrypcie */ }
  4. ?>


zrób narazie to a jak nie będzie działać to pomyślimy dalej
nserdon
  1. <?php
  2. include("mysql.connect.php");
  3.  
  4. if (!isset($_POST['submit'])) {
  5. '<form action="index.php" method="Post">
  6. Login: <input type="text" name="login"><br>
  7. Pass: <input type="password" name="pass"><br>
  8. <input type="submit" name="submit" value="loguj!"><br>
  9. </form>';}
  10.  
  11. if (isset($_POST['submit'])) {
  12. $login = $POST['login'];
  13. $pass = $POST['pass'];
  14. $za1 = "SELECT `nick`, `pass` FROM `adminuser` WHERE `nick`='$login' AND `pass`='$pass'";
  15. $wyk1 = mysql_query($za1);
  16. $row = mysql_fetch_row($wyk1);
  17. if($login == $row[0] && md5($pass) == $row[1]){
  18. $SESSION['login'] = $login;
  19. $SESSION['pass'] = md5($pass);
  20. echo 'dobre logowanie';
  21. echo $login;
  22. }
  23. else{
  24. echo 'zle dane';
  25. }
  26. }
  27. mysql_close($connect);
  28.  
  29. ?>


Jest tak teraz - ale mimo to za każdym razem wyrzuca "złe dane", sprawdzałem dwa razy - wszystko wpisuje dobrze. Jakieś pomysły?
Chemiq
a spróbuj zrobić coś takiego:
  1. <?php
  2. if (isset($_POST['submit'])) {
  3. $login = $POST['login'];
  4. $pass = $POST['pass'];
  5. $za1 = "SELECT `nick`, `pass` FROM `adminuser` WHERE `nick`='$login' AND `pass`='$pass'";
  6. $wyk1 = mysql_query($za1);
  7. $row = mysql_fetch_array($wyk1);
  8. if($login == $row[nick] && md5($pass) == $row[pass]){ /* nick i pass w nawiasach kwadratowych to nazwy pól w bazie danych (jeżeli masz inne nazwy to poprostu zmień ale tylko te w nawiasach kwadratowych) */
  9. $SESSION['login'] = $login;
  10. $SESSION['pass'] = md5($pass);
  11. echo 'dobre logowanie';
  12. echo $login;
  13. }
  14. else{
  15. echo 'zle dane';
  16. }
  17. }
  18. ?>
nserdon
Kod na chwile obecną, niestety dalej niedziałający:
  1. <?php
  2. include("mysql.connect.php");
  3.  
  4. if (!isset($_POST['submit'])) {
  5. '<form action="index.php" method="POST">
  6. Login: <input type="text" name="login"><br>
  7. Pass: <input type="password" name="pass"><br>
  8. <input type="submit" name="submit" value="loguj!"><br>
  9. </form>';}
  10. if (isset($_POST['submit'])) {
  11. $login = $_POST['login'];
  12. $pass = md5($pass);
  13. $za1 = "SELECT `nick`, `pass` FROM `adminuser` WHERE `nick`='$login' AND `pass`='md5($pass)'";
  14. $wyk1 = mysql_query($za1);
  15. $row = mysql_fetch_array($wyk1);
  16. if($login == $row[nick] && $pass == $row[pass]){
  17. $SESSION['login'] = $login;
  18. $SESSION['pass'] = $pass;
  19. echo 'dobre logowanie';
  20. }
  21. else{
  22. echo 'zle dane';
  23.  
  24. }
  25. }
  26.  
  27. mysql_close($connect);
  28.  
  29. ?>
Jakieś inne pomysły?
Dandelion
czemu dwa razy uzywasz MD5

$pass = md5($pass);

`pass`='md5($pass)'";

na moje oko powinno byc

$pass = md5($_POST['pass'])

a najlepiej wywalic te zmienne

$pass
$login





i bezposrednio w zapytaniu sql uzyc

'". $_POST['login'] ."'
'" . md5($_POST['haslo']) ."',

jedna zmienna mniej
radziowi
  1. <?php
  2. if($login == $row[nick] && $pass == $row[pass])
  3. ?>


podmien na

  1. <?php
  2. if($login == $row['nick'] && $pass == $row['pass'])
  3. ?>
nserdon
nie pomogło niestety
radziowi
A chyba znalazłem:

  1. <?php
  2. $SESSION['login'] = $login;
  3. $SESSION['pass'] = $pass;
  4. ?>


zmien na
  1. <?php
  2. $_SESSION['login'] = $login;
  3. $_SESSION['pass'] = $pass;
  4. ?>


Skrypt ten powienin chodizc bo wszytko jest Ok. Sprawdz i daj znac
nserdon
stan aktualny, dajel nie działa:
  1. <?php
  2. include("mysql.connect.php");
  3.  
  4. if (!isset($_POST['submit'])) {
  5. '<form action="index.php" method="POST">
  6. Login: <input type="text" name="login"><br>
  7. Pass: <input type="password" name="pass"><br>
  8. <input type="submit" name="submit" value="loguj!"><br>
  9. </form>';}
  10. if (isset($_POST['submit'])) {
  11. $login = $_POST['login'];
  12. $pass = md5($_POST['pass']);
  13. $za1 = "SELECT `nick`, `pass` FROM `adminuser` WHERE `nick`='$login' AND `pass`='$pass'";
  14. $wyk1 = mysql_query($za1);
  15. $row = mysql_fetch_row($wyk1);
  16. if($login == $row['nick'] && $pass == $row['pass']){
  17. $_SESSION['login'] = $login;
  18. $_SESSION['pass'] = $pass;
  19. echo 'dobre logowanie';
  20. }
  21. else{
  22. echo 'zle dane';
  23. }
  24. }
  25.  
  26. mysql_close($connect);
  27.  
  28. ?>
radziowi
A haslo w BD masz zakodowane md5??
nserdon
Oczywiscie, że tak.
Dandelion
  1. <?php
  2. if(!isset($_POST['submit'])){
  3. '<form action="index.php" method="Post">
  4. Login: <input type="text" name="login"><br>
  5. Pass: <input type="password" name="pass"><br>
  6. <input type="submit" name="submit" value="loguj!"><br>
  7. </form>';}
  8.  
  9. if($_POST['login'] && $_POST['pass']){
  10.  
  11.  
  12.  
  13.  
  14.  
  15. $query = mysql_query("SELECT * FROM `users` WHERE login = '".$_POST['login']."' ");
  16.  
  17. while ($row = mysql_fetch_assoc($query)){
  18. $login = $row['login'];
  19. $pass = $row['pass'];
  20. }
  21.  
  22.  
  23. if ($pass == md5($_POST['pass'])) {
  24.  
  25. echo 'zalogowales sie';
  26. }
  27.  
  28. else {
  29.  
  30. echo 'zle dane';
  31. }
  32.  
  33.  
  34.  
  35. }
  36. ?>


zmien sobie nazwe tabeli z jakiej ma wyciagac dane

i mozesz usunac zmienna $login
Chemiq
sprawdź czy pole w bazie w którym jest hasło ma conajmniej 32 znaki. też się kiedyś męczyłem ze skryptem logowania a okazało się poprostu że hasło w bazie było krótsze niż powinno. miałem określone za mało znaków i za każdym razem z bazy wyciągało obcięte hasło a porównywało do prawidłowego i oczywiście nie działało.

i jeszcze jedno:
  1. <?php
  2. while ($row = mysql_fetch_array($query)){ /* tu wydaje mi się że lepiej zastosować mysql_fetch_array niż mysql_fetch_assoc */
  3.  $login = $row[login]; /* w tym nawiasie kwadratowym nie powinno być apostrofów ani cudzysłowów */
  4.  $pass = $row[pass]; /* jak wyżej */
  5. }
  6. ?>
Dandelion
apostrofy moge byc

a co do wyboru tablicy nie widze zadnych roznic
Chemiq
w sumie to zawsze używałem array a nie assoc dlatego tak mi się wydaje no ale to kwestia gustu biggrin.gif

co do skryptu to bym go jeszcze trochę przerobił:
  1. <?php
  2. if(!isset($_POST['submit'])){
  3.  
  4. '<form action="index.php" method="Post">
  5. Login: <input type="text" name="login"><br>
  6. Pass: <input type="password" name="pass"><br>
  7. <input type="submit" name="submit" value="loguj!"><br>
  8. </form>';
  9.  
  10. }
  11.  
  12.  
  13. if(isset($_POST['submit'])) {
  14.  
  15. if($_POST['login']!=="" && $_POST['pass']!=="") {
  16.  
  17.  $query = mysql_query("SELECT * FROM `users` WHERE login = '".$_POST['login']."' ");
  18.  
  19.  while ($row = mysql_fetch_array($query)){
  20.  $login = $row[login];
  21.  $pass = $row[pass];
  22.  }
  23.  
  24.  if ($pass == md5($_POST['pass'])) {
  25.  echo 'zalogowales sie';
  26.  }
  27.  else {
  28.  echo 'zle dane';
  29.  }
  30. }
  31.  
  32. elseif($_POST['login']=="" || $_POST['pass']=="") {
  33. echo 'nie wpisales hasla lub loginu';
  34. }
  35. }
  36. ?>


no i jeszcze tak moja uwaga odnośnie ilości zanków pola pass (musi być conajmniej 32)
Dandelion
nie conajmniej tylko dokladnie 32 biggrin.gif

  1. <?php
  2. if(isset($_POST['login']) && isset($_POST['pass']) && isset($_POST['submit'])){
  3.  
  4.  $query = mysql_query("SELECT * FROM `users` WHERE login = '".$_POST['login']."' ");
  5.  
  6.  while ($row = mysql_fetch_assoc($query)){
  7.  
  8.  $pass = $row['pass'];
  9.  }
  10.  
  11.  if ($pass == md5($_POST['pass'])) {
  12.  echo 'zalogowales sie';
  13.  }
  14.  else {
  15.  echo 'zle dane';
  16.  }
  17. }
  18. ?>


juz sie czepiam ale mamy jeden if mniej haha.gif
Chemiq
nie musi być dokładnie. jak ktoś chce to może sobie 100 walnąć i to przecież nic nie zmieni dlatego napisałem conajmniej 32 biggrin.gif
Dandelion
hash md5 zajmuje zawsze 32 znaki to po co wiecej ?
Chemiq
no wiesz. niektórzy ludzie lubią zrobić coś inaczej biggrin.gif albo nie lubią cyfry 32 i wolą np. 33. może być naprawdę różnie biggrin.gif
nserdon
Cytat
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in c:\usr\krasnal\www\Vuf\index.php on line 17
zle danenserdon

Może ja mam źle serwer skonfigurowany? worriedsmiley.gif Zawsze udawało mi się tak proste skryty jak logowanie napisać, chyba sie starzeje...
Dandelion
Sprawdzilem u siebie

ponizej wklejam caly kod

pozmieniaj wpisy dotyczase polaczenia do mysql i odpowiedniej bazy danych
  1. <?php
  2.  
  3.  
  4. $connect = mysql_connect('localhost', 'login', 'haslo')
  5. or die ('Nie można połączyć z bazą danych');
  6.  
  7. mysql_select_db('wybrana baza', $connect)
  8. or die ('Nie można wybrać bazy');
  9.  
  10. if(!isset($_POST['submit'])){
  11. '<form action="index.php" method="Post">
  12. Login: <input type="text" name="login"><br>
  13. Pass: <input type="password" name="pass"><br>
  14. <input type="submit" name="submit" value="loguj!"><br>
  15. </form>';}
  16.  
  17. if($_POST['login'] && $_POST['pass']){
  18.  
  19.  
  20.  
  21.  
  22.  
  23. $query = mysql_query("SELECT * FROM `users` WHERE login = '".$_POST['login']."' ");
  24.  
  25. while ($row = mysql_fetch_assoc($query)){
  26.  
  27. $pass = $row['pass'];
  28. }
  29.  
  30.  
  31. if ($pass == md5($_POST['pass'])) {
  32.  
  33. echo 'zalogowales sie';
  34. }
  35.  
  36. else {
  37.  
  38. echo 'zle dane';
  39. }
  40.  
  41.  
  42.  
  43. }
  44.  
  45.  
  46.  
  47. ?>


I to musi dzialac nie ma innego wyjscia

struktura tabeli users


ID (int(11)
LOGIN (char(40))
HASLO (char(32))
henio
Mam problem z skryptem logowania.

Utworzyłem plik loguj.php
  1. <html>
  2. <head>
  3. <title>Zaloguj się do panelu administracyjnego</title>
  4. </head>
  5. <body>
  6. <?php
  7.  
  8. @$user = $_POST['user'];
  9. @$haslo = $_POST['haslo'];
  10. @$pass = addslashes($haslo);
  11. if(!isset($user) && !isset($haslo))
  12. {
  13. ?>
  14. <h1>Zaloguj się</h1>
  15. <form action="loguj.php" method="POST">
  16. <table border="1">
  17. <tr>
  18. <td><b>Nick</b></td>
  19. <td><input type="text" name="user"></td>
  20. </tr>
  21. <tr>
  22. <td><b>Hasło</b></td>
  23. <td><input type="password" name="haslo"></td>
  24. </tr>
  25. <tr>
  26. <td align="center"><input type="submit" value="Zaloguj się"></td>
  27. </tr>
  28. </table>
  29. </form>
  30. <?php
  31. }
  32. else
  33. {
  34.  
  35. $mysql = mysqli_connect('localhost', 'root', 'heniek', 'admin');
  36. if (mysqli_connect_errno())
  37. {
  38. echo 'Błąd! Nie można się połączyć z bazą danych';
  39. }
  40. $zapytanie= 'select * form users '
  41. ."where nick ='$user'";
  42.  
  43. while ($row = mysqli_fetch_assoc($zapytanie))
  44. {
  45. $pass = $row['pass'];
  46. }
  47. if ($pass == $haslo)
  48. {
  49. echo '<b>';
  50. echo $user;
  51. echo '</b>, zalogowałeś się pomyślnie <br /><br />';
  52. echo '<a href="add.php">Dodaj nowego użytkownika</a>';
  53. }
  54. else
  55. {
  56. echo 'Zło hasło lub nick';
  57. }
  58. }
  59. ?>


Gdy wpiszę dobre dane to wyświetla mi się, a gdy wpiszę złe dane to wyświetla mi się ... to samo

Kod
<b>Warning:</b> mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, string given in <b>C:\Program Files\Apache Group\Apache2\htdocs\admin\loguj.php </b> on line <b>45</b>]
<br><br>
Henio, zalogowałeś się pomyślnie
Chemiq
zobacz jakie masz $zapytanie. powinno być takie:
  1. <?php
  2. $zapytanie= "SELECT * FROM `users` WHERE nick='".$user."'";
  3. ?>
henio
Nadal jest bez zmian. Nie wiem dlaczego nie działa. Nawet gdy nic nie wpisze w formularzu to jest napisane, że się zalogowałem i wyświetla się :

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, string given in C:\Program Files\Apache Group\Apache2\htdocs\admin\loguj.php on line 44
Chemiq
a pozmieniaj zapytania z mysqli_... na mysql_...
henio
Dałbym gdybym "moje php" miało biblioteke mysql, a nie ma (nie wiem czemu), więc muszę stosowac tylko mysqli
Chemiq
to jakiego ty php używasz??
henio
Cytat(Chemiq @ 30.12.2006, 16:36:46 ) *
to jakiego ty php używasz??


Mam wersję php 5, ale nie wiem czemu nie ma tam biblitoeki mysql.

Nie wiesz co zrobić, aby skrpyt działał jak należy??
Chemiq
co do tych bibliotek to już musiałby juz ktoś bardziej doświadczony powiedzieć bo ja osobićsie nie mam pojęcia jak może ich nie być.

a jeżeli chodzi o skrypt to zrobiłbym go mysql_.... nie wiem jaka jest różnica pomiedzy mysql_... i mysqli_... więc nie potrafię swojej wersji przetłumaczyć na twoją
henio
Szkoda, mam nadzieję, że ktoś bardziej doświadczony odpisze mi na mój błąd
strife
Cytat(henio @ 30.12.2006, 19:14:46 ) *
Szkoda, mam nadzieję, że ktoś bardziej doświadczony odpisze mi na mój błąd


Cytat
Description

Procedural style:
array mysqli_fetch_assoc ( mysqli_result result )

Musisz dać wynik, a dajesz string. Zapytanie należy wykonać poprzez mysqli_query" title="Zobacz w manualu php" target="_manual wcześniej.

  1. <?php
  2. $zapytanie= mysqli_query( "SELECT * FROM `users` WHERE nick='".$user."'" );
  3. ?>


Pozdrawiam!
spryciula
  1. <?php
  2. include("connect.php");
  3.  
  4. if(!isset($submit)){
  5. '<form action="index.php" method="Post">
  6. Login: <input type="text" name="login"><br>
  7. Pass: <input type="password" name="pass"><br>
  8. <input type="submit" name="submit" value="loguj!"><br>
  9. </form>';}
  10.  
  11. if(isset($_POST['submit'])==true){
  12. $login = $_POST['login'];
  13. $pass = md5($_POST['pass']);
  14. // $za1 = "Select `nick`, `pass` FROM `adminuser` WHERE `nick`='$login' AND `pass`='$pass'";
  15. $wyk1 = mysql_query("Select `nick`, `pass` FROM `adminuser` WHERE `nick`='$login' AND `pass`='$pass'");
  16. $row = mysql_fetch_array($wyk1);
  17.  
  18.  
  19.  
  20. //echo $row[0]."|||||".$row[1];
  21. //exit;
  22.  
  23. if($login == $row[0] && $pass == $row[1]){
  24. $_SESSION['login'] = $login;
  25. $_SESSION['pass'] = md5($pass);
  26. echo 'dobre logowanie';
  27. echo $login;
  28. }
  29. else{
  30. echo 'zle dane';
  31. }
  32. }
  33. mysql_close($connect);
  34.  
  35. ?>


trochę namieszałeś z hasowaniem hasła

  1. <?php
  2. if(isset($_POST['submit'])==true){
  3. $login = $_POST['login'];
  4. $pass = md5($_POST['pass']);
  5. ?>


przed wykonaniem zapytania daj funkcję md5


a potem przy tym warunku zdejmij md5
  1. <?php
  2. if($login == $row[0] && $pass == $row[1]){..
  3. ?>
henio
Już mi działa. Chciałem zmienić swój skrypt. Utworzyłem:
loguj.php
  1. <?php
  2. <html>
  3. <head>
  4. <title>Zaloguj się do panelu administracyjnego</title>
  5. </head>
  6. <body>
  7. <h1>Zaloguj się</h1>
  8. <form action="admin.php" method="POST">
  9. <table border="1">
  10. <tr>
  11. <td><b>Nick</b></td>
  12. <td><input type="text" name="user"></td>
  13. </tr>
  14. <tr>
  15. <td><b>Hasło</b></td>
  16. <td><input type="password" name="haslo"></td>
  17. </tr>
  18. <tr>
  19. <td align="center"><input type="submit" value="Zaloguj się"></td>
  20. </tr>
  21. </table>
  22. </form>
  23. </body>
  24. </html>
  25. ?>


admin.php
  1. <?php
  2. @$user = $_POST['user'];
  3. @$haslo = $_POST['haslo'];
  4. @$pass = addslashes($haslo);
  5. @$user = addslashes($user);
  6. $_SESSION['user'] = $user;
  7. $mysql = mysqli_connect('localhost', 'root', 'heniek', 'admin');
  8.  
  9. if (mysqli_connect_errno())
  10. {
  11. echo 'Błąd! Nie można się połączyć z bazą danych';
  12. }
  13.  
  14. $zapytanie = mysqli_query($mysql, "SELECT * FROM `users` WHERE nick='".$_SESSION['user']."'" );
  15.  
  16. while ($row = mysqli_fetch_assoc($zapytanie))
  17. {
  18. $pass = $row['pass'];
  19. }
  20. if ($pass == $haslo)
  21. {
  22. echo '<b>';
  23. echo $_SESSION['user'];
  24. echo '</b>, zalogowałeś się pomyślnie <br /><br />';
  25. echo '<a href="add.php">Dodaj nowego użytkownika</a> <br /><br />';
  26. echo '<a href="wyloguj.php">Wyloguj się</a>';
  27. }
  28. else
  29. {
  30. echo 'Zło hasło lub nick';
  31. }
  32. ?>


add.php
  1. <html>
  2. <head>
  3. <meta http-equir="Content-Type" content="text/html; charset=iso 8859-2">
  4. </head>
  5. <body>
  6. <?php
  7. $userek=$_SESSION['user'];
  8. if(!empty($userek))
  9. {
  10. echo 'Musisz się zalogować <br />';
  11. echo '<a href="loguj.php">Zaloguj się</a>';
  12. }
  13. else
  14. {
  15. ?>
  16. <form action="adding.php" method="POST">
  17. <table>
  18. <tr><td>Nick:</td><td><input type="text" name="user"></td></tr>
  19. <tr><td>Haslo:</td><td><input type="password" name="haslo"></td></tr>
  20. <tr><td>Imię:</td><td><input type="text" name="imie"></td></tr>
  21. <tr><td>Nazwisko:</td><td><input type="text" name="nazwisko"></td></tr>
  22. <tr><td>Klub w Hattricku:</td><td><input type="text" name="klub"></td></tr>
  23. <tr><td>ID klubu:</td><td><input type="text" name="id_klub"></td></tr>
  24. <tr><td>Funkcja na stronie:</td><td><input type="text" name="zad"></td></tr>
  25. <tr><td>Przwileje:</td><td><input tpye="text" name="przywileje"></td></tr>
  26. <tr><td align="center"><input type="submit" value="Dodaj"></td></tr>
  27. </form>
  28. </table>
  29. <?php
  30. }
  31. ?>
  32. </body
  33. ></html>


adding.php
  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5. <?php
  6. @$user=$_POST["user"];
  7. @$pass=$_POST["haslo"];
  8. @$imie=$_POST["imie"];
  9. @$nazwisko=$_POST["nazwisko"];
  10. @$klub=$_POST["klub"];
  11. @$id_klub=$_POST["id_klub"];
  12. @$zad=$_POST["zad"];
  13. @$przywileje=$_POST["przywileje"];
  14.  
  15. if (!$user || !$pass || !$imie || !$nazwisko || !$klub || !$id_klub || !$zad || !$przywileje)
  16. {
  17. echo 'Brak wszystkich potrzebych danych, aby móc dodać nowego użytkownika';
  18. return;
  19. }
  20. else
  21. {
  22. $db = mysqli_connect('localhost', 'root', 'heniek', 'admin');
  23. if (mysqli_connect_errno())
  24. {
  25. echo 'Błąd! Nie można się połączyć z bazą danych';
  26. }
  27. echo $zapytanie = "insert into users (nick, pass, imie, nazwisko, klub, id_klub, funkcja, przywileje) 
  28. values ('".$user."', '".$pass."', '".$imie."', '".$nazwisko."', '".$klub."', '".$id_klub."', '".$zad."', '".$przywileje."')<br />";
  29.  
  30. $zapytanie = "insert into users (nick, pass, imie, nazwisko, klub, id_klub, funkcja) 
  31. values ('".$user."', '".$pass."', '".$imie."', '".$nazwisko."', '".$klub."', '".$id_klub."', '".$zad."', '".$przywileje."')";
  32.  
  33. $wynik = $db->query( $zapytanie );
  34.  
  35. $wynik = $db->query("insert into users (nick, pass, ime, nazwisko, klub, id_klub, funkcja, przywileje) 
  36. values ('".$user."', '".$pass."', '".$imie."', '".$nazwisko."', '".$klub."', '".$id_klub."', '".$zad."', '".$przywileje."')");
  37. if ($wynik)
  38. {
  39. print ("Nowy użytkownik dodany do bazy danych!");
  40. }
  41. else
  42. {
  43. echo 'Nie dodano użytkownika';
  44. }
  45. }
  46. ?>
  47. </body>
  48. </html>


wyloguj.php
  1. <?php
  2. $nara=$_SESSION['user'];
  3. unset($_SESSION['user']);
  4. ?>
  5. <html>
  6. <head>
  7. <title>Wylogowywanie</title>
  8. </head>
  9. <body>
  10. <?php
  11. if (!empty($nara))
  12. {
  13. echo 'Wylogowano <br />';
  14. }
  15. else
  16. {
  17. echo 'Użytkownik nie był zalogowany';
  18. }
  19. ?>
  20. </body>
  21. </html>


Po zalogowaniu wciskam link aby dodać nowego usera (add.php) i tam mi się wyświetla:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\Program Files\Apache Group\Apache2\htdocs\admin\add.php:6) in C:\Program Files\Apache Group\Apache2\htdocs\admin\add.php on line 7

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Program Files\Apache Group\Apache2\htdocs\admin\add.php:6) in C:\Program Files\Apache Group\Apache2\htdocs\admin\add.php on line 7
Musisz się zalogować

Nie wiem czemu nie działa
henio
Zmodyfikowałem plik add.php

  1. <html>
  2. <head>
  3. <meta http-equir="Content-Type" content="text/html; charset=iso 8859-2">
  4. </head>
  5. <body>
  6. <?php
  7. $userek=$_SESSION['user'];
  8. if(!empty($userek))
  9. {
  10. echo 'Musisz się zalogować <br />';
  11. echo '<a href="loguj.php">Zaloguj się</a>';
  12. }
  13. else
  14. {
  15. ?>
  16. <form action="adding.php" method="POST">
  17. <table>
  18. <tr><td>Nick:</td><td><input type="text" name="user"></td></tr>
  19. <tr><td>Haslo:</td><td><input type="password" name="haslo"></td></tr>
  20. <tr><td>Imię:</td><td><input type="text" name="imie"></td></tr>
  21. <tr><td>Nazwisko:</td><td><input type="text" name="nazwisko"></td></tr>
  22. <tr><td>Klub w Hattricku:</td><td><input type="text" name="klub"></td></tr>
  23. <tr><td>ID klubu:</td><td><input type="text" name="id_klub"></td></tr>
  24. <tr><td>Funkcja na stronie:</td><td><input type="text" name="zad"></td></tr>
  25. <tr><td>Przwileje:</td><td><input tpye="text" name="przywileje"></td></tr>
  26. <tr><td align="center"><input type="submit" value="Dodaj"></td></tr>
  27. </form>
  28. </table>
  29. <?php
  30. }
  31. ?>
  32. </body
  33. ></html>


Jednak nadal nie działa tak jak powinno. Wyświetla się:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\Program Files\Apache Group\Apache2\htdocs\admin\add.php:6) in C:\Program Files\Apache Group\Apache2\htdocs\admin\add.php on line 8

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Program Files\Apache Group\Apache2\htdocs\admin\add.php:6) in C:\Program Files\Apache Group\Apache2\htdocs\admin\add.php on line 8
Musisz się zalogować



Czy na tym formu jest ktoś, kto wie dlaczego mam taki błąd??
Balas
Rozpoczynaj sesje przed wyslaniem kodu HTML

  1. <?php
  2. ?>
  3. <html>
  4. <head>
  5. <meta http-equir="Content-Type" content="text/html; charset=iso 8859-2">
  6. </head>
  7. <body>
  8. <?php
  9. $userek=$_SESSION[&apos;user&apos;];
  10. if(!empty($userek))
  11. {
  12. echo &apos;Musisz się zalogować <br />&apos;;
  13. echo &apos;<a href="loguj.php">Zaloguj się</a>&apos;;
  14. }
  15. else
  16. {
  17. ?>
  18. <form action="adding.php" method="POST">
  19. <table>
  20. <tr><td>Nick:</td><td><input type="text" name="user"></td></tr>
  21. <tr><td>Haslo:</td><td><input type="password" name="haslo"></td></tr>
  22. <tr><td>Imię:</td><td><input type="text" name="imie"></td></tr>
  23. <tr><td>Nazwisko:</td><td><input type="text" name="nazwisko"></td></tr>
  24. <tr><td>Klub w Hattricku:</td><td><input type="text" name="klub"></td></tr>
  25. <tr><td>ID klubu:</td><td><input type="text" name="id_klub"></td></tr>
  26. <tr><td>Funkcja na stronie:</td><td><input type="text" name="zad"></td></tr>
  27. <tr><td>Przwileje:</td><td><input tpye="text" name="przywileje"></td></tr>
  28. <tr><td align="center"><input type="submit" value="Dodaj"></td></tr>
  29. </form>
  30. </table>
  31. </body
  32. ></html>
henio
Pokonałem dzięki tobie jeden problem. Teraz tylko zastanawia mnie dlaczego mimo, że $userek nie jest pusta to wyświetla mi się, że muszę się zalogować.

I jeszcze jedno.

Jak zrobić, gdy po dodaniu nowego usera, chcę wrócić do strony admin.php i żeby nie wyświetlało mi się, że muszę się zalogować.

---
Chyba wiem jak ten błąd pokonać, ale do tego potrzebny jest mi skrpyt, który po otwarciu sesji i utowrzeniu zmiennych sesji przeniesie mnie automatycznie na stronie admin.php

  1. <?php
  2. @$user = $_POST['user'];
  3. @$haslo = $_POST['haslo'];
  4. @$haslo = addslashes($haslo);
  5. @$user = addslashes($user);
  6. $_SESSION['user'] = $user;
  7. $_SESSION['haslo'] = $haslo;
  8. if(!$user || !$haslo)
  9. {
  10. echo 'Brak wszystkich danych<br /><br />';
  11. echo '<a href="loguj.php">Zaloguj się</a>';
  12. }
  13. else
  14. {
  15. $mysql = mysqli_connect('localhost', 'root', 'heniek', 'admin');
  16.  
  17. if (mysqli_connect_errno())
  18. {
  19. echo 'Błąd! Nie można się połączyć z bazą danych';
  20. }
  21.  
  22. $zapytanie = mysqli_query($mysql, "SELECT * FROM `users` WHERE nick='".$_SESSION['user']."'" );
  23.  
  24. while ($row = mysqli_fetch_assoc($zapytanie))
  25. {
  26. $pass = $row['pass'];
  27. $prz = $row['przywileje'];
  28. }
  29. if ($pass == $haslo)
  30. {
  31. echo '<b>';
  32. echo $_SESSION['user'];
  33. echo '</b>, zalogowałeś się pomyślnie <br /><br />';
  34. if ($prz == 1)
  35. {
  36. echo '<a href="add.php">Dodaj nowego użytkownika</a> <br /><br />';
  37. }
  38. echo '<a href="wyloguj.php">Wyloguj się</a>';
  39. }
  40. else
  41. {
  42. echo 'Zło hasło lub nick';
  43. }
  44. }
  45. ?>
doomino
  1. <?php
  2.  
  3. $polaczenie=mysql_connect("localhost","root","root"); /* Nawiązanie połączenia z bazą */
  4. if (! $polaczenien) {
  5. die("Brak połączenia:".mysql_error());
  6. } 
  7.  
  8. ?>


Niby banał niby błachostka a wywala
Brak połšczenia:Client does not support authentication protocol requested by server; consider upgrading MySQL client.
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.