Cześć.
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:
<input type='text' name='newpass' placeholder='Nowe haslo' required>
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
if (isset($_POST['username']) and
isset($_POST['password'])){ //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>
// ";
}
else echo "Nie mogę połączyć się z bazą danych!";
//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
if (isset($_SESSION['username'])){ $username = $_SESSION['username'];
$day = date('d'); // dzień $month = date('m'); // miesiąc $year = date('Y'); // rok
if ($_SESSION['firma'] == 'NETCOMPANY') {
$data_in = date("Y-m-d", mktime (0
,0
,0
,$month-1
,19
,$year)); $data_out = date("Y-m-d", mktime (0
,0
,0
,$month,20
,$year)); }
else {
$data_in = date("Y-m-d", mktime (0
,0
,0
,$month,1
,$year)); }
<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>
";
//*
unset($_POST['newpass']); //*/
</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>
";
<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>";*/
}
}
</div>
</div>
";
<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>
";
</pre></div>
<div class=pageFooter>";
</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">
<?php if(isset($fmsg)){ ?><div class="alert alert-danger" role="alert">
<?php echo $fmsg; ?> </div>
<?php } ?> <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 } ?>
Ten post edytował elemeledutki 13.06.2017, 09:46:24