SaVaGe123 21 Zgłoś post Napisano Grudzień 12, 2011 Skrypt działa następującą: W bazie jest tabela o nazwie "kody_2zl" oto zawartość: -- -- Struktura tabeli dla `kody_2zl` -- CREATE TABLE IF NOT EXISTS `kody_2zl` ( `kod` varchar(8) NOT NULL, `status` tinyint(4) NOT NULL default '0', `data` datetime NOT NULL, `gracz` int(11) NOT NULL default '0', PRIMARY KEY (`kod`), KEY `status` (`status`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; A to skrypt dzięki któremu wpisany kod dodaje nam pieniądze. <?php if(!empty($_POST['kod'])){ $_POST['kod'] = mysql_real_escape_string($_POST['kod']); $msg = ""; mysql_query("update kody_2zl set status = 1, data = now(), gracz = ".$login." where kod = '".$_POST['kod']."' and status = 0"); if(mysql_affected_rows() == 1){ mysql_query("update users set waluta = waluta + 2 where login = '$login'"); $row->waluta += 2; $msg = "Dodano 2 złote"; } else $msg = "Niepoprawny kod"; echo $msg."<br><br><br>"; } ?> Posiadasz: <b><?php while ($row = mysql_fetch_object($result)) { echo $row->waluta;}?></b> złote<br><br><br> Doładuj monety<br><br> <form action='dot.php?a=vip' method='post'> Kod: <input type='text' name='kod'> <input type='submit' value='Użyj'> </form> Na samym początku dane: <?php ob_start(); ob_implicit_flush(0); session_start(); if(@$_SESSION['zalogowany']==0) { header('Location: logowanie.php '); } include('db_fns.php'); $pass=$_POST['pass']; $pass2=$_POST['pass2']; $sha1pass=sha1($pass); @$login = $_SESSION['login']; $log = mysql_query("SELECT * FROM users WHERE login = '$login'") or die (mysql_error()); $logi = mysql_fetch_assoc($log); $old=$logi['password']; $oldpas=$_POST['oldpass']; $oldpass=sha1($oldpas); $result = mysql_query("SELECT * FROM users WHERE login = '$login'"); ?> A to struktura tabeli "users": -- -- Struktura tabeli dla `users` -- CREATE TABLE IF NOT EXISTS `users` ( `id` int(11) NOT NULL auto_increment, `login` varchar(32) character set utf8 collate utf8_polish_ci NOT NULL, `password` varchar(40) character set utf8 collate utf8_polish_ci NOT NULL, `email` varchar(50) character set utf8 collate utf8_polish_ci NOT NULL, `token` text character set utf8 collate utf8_polish_ci NOT NULL, `potwierdzenie` tinyint(4) NOT NULL default '0', `waluta` int(11) NOT NULL default '0', `ftp` text character set utf8 NOT NULL, `baza` text character set utf8 collate utf8_polish_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ; Skrypt wywala błąd ze niepoprawny kod. Nie mogę sobie z tym poradzić. Uprzedzam pytania ! Nie otwieram firmy hostingowej ! Udostępnij ten post Link to postu Udostępnij na innych stronach
regdos 1848 Zgłoś post Napisano Grudzień 12, 2011 A spróbuj dać data = 'now()' i dla gracza też w lini mysql_query("update kody_2zl set status = 1, data = now(), gracz = ".$login." where kod = '".$_POST['kod']."' and status = 0"); i zobaczyć efekt. Jak nie pomoże to rób sobie echo tego zapytani przed wywołaniem i spróbuj wykonać je w phpmyadmin i zobaczyć czy jakiegoś błędu nie wywala. Udostępnij ten post Link to postu Udostępnij na innych stronach
Misiek08 285 Zgłoś post Napisano Grudzień 13, 2011 Gracz musi byc też w apostrofach, bo teraz nie jest w żaden sposób zabezpieczany. Dodatkowo radziłbym $_POST['kod'] potraktować np. mysql_real_escape_string. Udostępnij ten post Link to postu Udostępnij na innych stronach
SaVaGe123 21 Zgłoś post Napisano Grudzień 15, 2011 Moim błędem było to że gracza dałem w "$login" a powinienem w '$login' żeby kodu nie dzielić. Redgos i Misiek wielkie dzięki. I mam jeszcze jedno pytanko do Miska bo ja tam niby dałem $_POST['kod'] = mysql_real_escape_string($_POST['kod']); Można w takiej formie ? Udostępnij ten post Link to postu Udostępnij na innych stronach
xorg 693 Zgłoś post Napisano Grudzień 15, 2011 (edytowany) Może być. Pamiętaj że wszystkie dane wprowadzane do bazy MUSZĄ być filtrowane. Edytowano Grudzień 15, 2011 przez xorg (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
SaVaGe123 21 Zgłoś post Napisano Grudzień 15, 2011 (edytowany) I kolejny problem Rozbudowałem skrypt ze po wpisaniu kodu wartego 2 zł dodaje 2 zł a jak kod warty 6 zł to dodaje 6 zł wszystko ładnie pięknie działa tylko mam problem w wywalaniem komunikatu. Jeśli wpisze kod za 2 3 lub 6 zł to wywala mi "Niepoprawny kod" lecz dodaje pieniądze a jesli za 9 zł (ostatni w skrypcie) to wtedy "Dodano 9 złotych". Jak przerobic ten kod aby posprawdzało wszystkie w bazie i jak niebędzie wywaliło jeden komunikat ? Oto kod : <?php if(!empty($_POST['kod'])){ $_POST['kod'] = mysql_real_escape_string($_POST['kod']); $msg = ""; mysql_query("update kody_2zl set status = 1, data = now(), gracz = '.$login.' where kod = '".$_POST['kod']."' and status = 0"); if(mysql_affected_rows() == 1){ mysql_query("update users set waluta = waluta + 2 where login = '$login'"); $row->waluta += 2; $msg = "<p class='true'>Dodano 2 złote</p>"; } mysql_query("update kody_3zl set status = 1, data = now(), gracz = '.$login.' where kod = '".$_POST['kod']."' and status = 0"); if(mysql_affected_rows() == 1){ mysql_query("update users set waluta = waluta + 3 where login = '$login'"); $row->waluta += 3; $msg = "<p class='true'>Dodano 3 złote</p>"; } mysql_query("update kody_6zl set status = 1, data = now(), gracz = '.$login.' where kod = '".$_POST['kod']."' and status = 0"); if(mysql_affected_rows() == 1){ mysql_query("update users set waluta = waluta + 6 where login = '$login'"); $row->waluta += 6; $msg = "<p class='true'>Dodano 6 złotych</p>"; } mysql_query("update kody_9zl set status = 1, data = now(), gracz = '.$login.' where kod = '".$_POST['kod']."' and status = 0"); if(mysql_affected_rows() == 1){ mysql_query("update users set waluta = waluta + 9 where login = '$login'"); $row->waluta += 9; $msg = "<p class='true'>Dodano 9 złotych</p>"; } else $msg = "<p class='error'>Niepoprawny kod</p>"; echo $msg."<br><br><br>";} ?> Edytowano Grudzień 15, 2011 przez SaVaGe123 (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
Misiek08 285 Zgłoś post Napisano Grudzień 19, 2011 Odpisałem Ci w drugim temacie. Udostępnij ten post Link to postu Udostępnij na innych stronach