SaVaGe123 21 Zgłoś post Napisano Kwiecień 29, 2012 Witam, Napisałem skrypt doładowania pkt za kod. Wszystko działa ok oprócz komunikatu. Gdy usunę linijkę z dodaniem kodu jako zużytego, działa jak powinno. A jak jest to wywala zły komunikat a mimo to dodaje pkt. Oto kod: <?php if(isset($_POST['submit'])) { $ext1 = mysql_query("SELECT * FROM `coupons` WHERE `code`='".$_POST['code']."' AND `used`='0'"); $ext = mysql_fetch_object($ext1); if($ext->id != ""){ mysql_query("UPDATE `fusiond5dvP_users` SET `portfel`=`portfel`+'$ext->coins' WHERE `user_id`='".$userdata['user_id']."'"); mysql_query("UPDATE `coupons` SET `used`='1' WHERE `code`='".$_POST['code']."'"); // jak to wywale chodzi ok $wiadomosc = "<div>Pomyślnie dodano <b>{$ext->coins}</b> punktów!</div>"; } else{ $wiadomosc = "<div>Wpisałeś zły kod, lub został on już zużyty!</div>"; }} ?></br></br> <?php echo $wiadomosc; ?> <form method="post"> <table class="form"> <tr> <td width="150px"><b>Wpisz kod:</b></td> <td> <input type="text" name="code" /><br /> </td> </tr> <tr> <td></td> <td><input type="submit" name="submit" value="Wyślij" /></td> </tr> </table></br> <div> <div>Jeśli posiadasz kod, wpisz go w pole powyżej i potwierdź, a otrzymasz punkty.</div> <a href="sms.php"><div><b>Nie posiadasz kodu ? Możesz kupić go tutaj!</b></div></a> </div> </form> Możliwe że to banalny błąd, ale nie mogę go sam znaleźć. Próbowałem już wszystkiego. Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość Zgłoś post Napisano Kwiecień 29, 2012 (edytowany) Ładny sql injection może pójść na ten skrypt Przefiltruj najpierw $_POST['code'] Jakiś błąd się wyświetla? oprócz tego że nie działa komunikat Edytowano Kwiecień 29, 2012 przez Gość (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
SaVaGe123 21 Zgłoś post Napisano Kwiecień 29, 2012 Właśnie problem jest w tym że nie. To jest "szkielet" skryptu, ma działać a potem zabezpieczenia Udostępnij ten post Link to postu Udostępnij na innych stronach
regdos 1848 Zgłoś post Napisano Kwiecień 29, 2012 Funkcja mysql_fetch_object zwraca Returns an object with string properties that correspond to the fetched row, or FALSE if there are no more rows. więc powinno wystarczyć if($ext) { Udostępnij ten post Link to postu Udostępnij na innych stronach
SaVaGe123 21 Zgłoś post Napisano Kwiecień 29, 2012 Tak, lecz nie to jest problemem. Skrypt nadal zwraca błędny wynik a nawet jak umieszczę $ext->coins w drugim komunikacie dane wyparowywują i nie wyświetla się jego zawartość. Udostępnij ten post Link to postu Udostępnij na innych stronach
kcp 41 Zgłoś post Napisano Kwiecień 30, 2012 Hmm.. A potrzebne Ci jest trzymanie zużytych kodów w bazie? Może poprostu: <?php if(isset($_POST['submit'])) { $ext1 = mysql_query("SELECT * FROM `coupons` WHERE `code`='".$_POST['code']."'"); $ext = mysql_fetch_object($ext1); if($ext->id != ""){ $code = $_POST['code']; mysql_query("UPDATE `fusiond5dvP_users` SET `portfel`=`portfel`+'$ext->coins' WHERE `user_id`='".$userdata['user_id']."'"); mysql_query("DELETE from `coupons` WHERE `code`='". $code ."'"); $wiadomosc = "<div>Pomyślnie dodano <b>{$ext->coins}</b> punktów!</div>"; Udostępnij ten post Link to postu Udostępnij na innych stronach
SaVaGe123 21 Zgłoś post Napisano Kwiecień 30, 2012 (edytowany) Miałem nadzieje że to coś da Niestety ... Nadal ten sam problem, rekord oczywiście został usunięty. Edytowano Kwiecień 30, 2012 przez SaVaGe123 (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach