Jestem zbyt świeżutki żeby znaleźć się "aż" w Przedszkolu, ale niższej kategorii nie znalazłem, więc piszę tutaj.
Napisałem (posługując się głównie przykładami z netu) bardzo prosty skrypt, który wyświetla kilka informacji z bardzo prostej bazy danych (dwie tabele: users (id, username, password, active) i karty (id, kartanr, data, danie, cena, firma)
Po zalogowaniu skrypt wyświetla odpowiednie dane (działa)
dodanie bardzo prostego formularza:
zapytanie (które działało "przed chwilą") zwraca błąd (sprawdziłem, to to samo zapytanie i POWINNO działać)
Różnica, którą widzę jest taka, że w momencie pierwszego (poprawnego) zapytania istnieją zmienne $_POST['username'] i $_POST['password'], przy ponownym wykonaniu nie ma ich, jest tylko $_POST['newpass'] (którą chcę użyć do możliwości zmiany hasła). Tyle, że dane używane w zapytaniu przechowywane są w $_SESSION a ta zmiennna się NIE ZMIENIA.
łatwiej byłoby zobaczyć na działającym przykładzie: link: karty.delihouse.pl login: 686 hasło: haslo . Po zalogowaniu wszystko działa jak powinno, po kliknięciu guzika "ZMIEN HASLO" zapytanie wywraca się, mimo, że (mi się wydaje) jest poprawne...
Pomożecie?
CAŁY KOD:
<?php //Start the Session // require('connect.php'); //3. If the form is submitted or not. //3.1 If the form is submitted //3.1.1 Assigning posted values to variables. $username = $_POST['username']; $password = $_POST['password']; //3.1.2 Checking the values are existing in the database or not //dane dostępowe $query = "SELECT * FROM `users` WHERE username='$username' and password='$password'"; // zapytanie do bazy danych // echo "<style> // </style> // "; } //3.1.2 If the posted values are equal to the database values, then session will be created for the user. if ($count == 1){ $_SESSION['username'] = $username; $query = mysql_query("SELECT firma FROM `karty` WHERE kartanr='$username' LIMIT 1") or die("Błąd w zapytaniu! 4"); $_SESSION['firma'] = $nazwafirmy[0]; }else{ //3.1.3 If the login credentials doesn't match, he will be shown with an error message. $fmsg = "NIEPRAWIDLOWE DANE LUB BRAK KARTY."; } } //3.1.4 if the user is logged in Greets the user with message $username = $_SESSION['username']; if ($_SESSION['firma'] == 'NETCOMPANY') { } else { } echo "<!DOCTYPE html> <head> <meta http-equiv=content-type content=text/html; charset=iso-8859-2> <link rel=stylesheet href=styles.css > <title>Page Title</title> <meta name=description content=Write some words to describe your html page> </head> <body> <div class=blended_grid> <div class=pageHeader> Wersja MOCNO robocza. Dane na razie uaktualniane sa recznie poprzez export z naszego programu sprzedazowego do excela i stamtad do bazy. MOZE sie zdarzyc tak, ze zapomne, ale staral sie bede aktualizoweac kazdego dnia po jego zakonczeniu.<br /> W kazdym razie w tej plikacji moga pojawic sie bledy (glownie ludzkie), w razie watpliwosci prosze o mail.<br /> <small> V 0.1.6 (dodane rozliczenie po okresie wybranym dla danej firmy)</small> "; //* //*/ echo " </div> <div class=pageLeftMenu>KARTA NR:<br /> <b> <font color='#FAA' size='7'>" . $username . "</font> <br /> <font color='#AA5050' size='5'>" . $_SESSION['firma'] . "</font> </b> <br />Data od:<br /><b>". $data_in . "</b><br />Data do:<br /><b>". $data_out . "</b> <small><p>Na razie automatycznie wybierany jest okres aktualny (wlasciwy dla danej firmy).<br />Pozniej postaram sie dopisac mozliwosc wyboru wlasnego zakresu dat.</p></small> <br /><strong><a href='logout.php'><br />LOGOUT</a></strong><br /> <br /><strong><a href='logout.php'><br />ZMIEN HASLO</a></strong><br /><small>Na razie nie dziala</small> <form method='POST'> <input type='text' name='newpass' placeholder='Nowe haslo' required> <button type='submit'>ZMIEN HASLO</button> </form> </div> <div class=pageContent> "; echo " <div class=divTable> <div class=divTableBody> "; $wynik = mysql_query("SELECT data FROM karty WHERE kartanr='$username' AND data>='$data_in' AND data<'$data_out' GROUP BY data") or die("BLAD w zapytaniu 1: <pre>SELECT data FROM karty WHERE kartanr='$username' AND data>='$data_in' AND data<'$data_out' GROUP BY data</pre>"); $dania = mysql_query("SELECT danie, cena FROM karty WHERE data='$rek1[0]' AND kartanr='$username'") or die("Błąd w zapytaniu 2: <pre>SELECT danie, cena FROM karty WHERE data='$rek1[0]' AND kartanr='$username'</pre>"); echo "<div class=divTableRow><div class=divTableCell>".$rek[0]."</div><div class=divTableCell>".$rek[1]."</div></div>"; /*echo "<pre>"; print_r ($rek); echo "</pre>";*/ } } echo " </div> </div> "; echo " <br /><font color='#CCC'><p>Niestety nie umiem jeszcze tego podsumowac (cos poczytam o zamianie stringa na liczbe, pewnie o to chodzi), na razie trzeba uzyc kalkulatora albo oszacowac w pamieci...</p></font><pre> "; echo " </pre></div> <div class=pageFooter>"; echo " </div> </div> </boy> </html> "; }else{ //3.2 When the user visits the page first time, simple login form will be displayed. ?> <html> <head> <title>Nie mam pomyslu na title</title> </head> <body> <div class="container"> <form class="form-signin" method="POST"> <h2 class="form-signin-heading">Please Login</h2> <div class="input-group"> <span class="input-group-addon" id="basic-addon1">@</span> <input type="text" name="username" class="form-control" placeholder="Username" required> </div> <label for="inputPassword" class="sr-only">Password</label> <input type="password" name="password" id="inputPassword" class="form-control" placeholder="Password" required> <button class="btn btn-lg btn-primary btn-block" type="submit">Login</button> </form> </div> </body> </html> <?php } ?>