Autor | Zpráva | ||
---|---|---|---|
Fastman Profil |
Dobrý den,
Potřeboval bych poradit ohledně PHP a SMS. Mám zřízenou SMS bránu, když uživatel odešle SMS ve tvaru "PM CSGO NICK" tak se SMS zapíše do logu, script vypadá nějak takhle po zapsání logu <?php $log_file = FOpen('log.txt', 'a'); // Otevirate soubor FPutS($log_file, Date("Y-m-d H:i:s") . " " . $_GET['text'] . " " . $_GET['price'] . " " . $_GET['debug'] . "\n"); // Zapisujete text z prichozi SMS zpravy FClose($log_file); // Uzavirate soubor echo "Dekujeme za platbu, zapsali jsme si ji. Vase VIP pro csgo aktivujeme co nejrychleji."; // Odpovidate zakaznikovi ?> V logu po odeslání SMS to vypadá takhle 2013-08-27 07:52:46 pm csgo test 30.000 Potřebuji konkrétně tohle: Mám založenou databázi "vipcsgo" a potřebuji aby se napojil do tabulky "STAMM_DB_1" a našel uživatele v položce "steamid" a až ho najde tak mu připíše nějakou hodnotu (např: 250 bodů) do položky "points". ukázka databáze Jak by to probíhalo: Uživatel odešle sms ve tvaru "PM CSGO STEAM_1:1:42471801" odešle. Při odeslání to vyvolá PHP kód a přijde mu SMS "Dekujeme za platbu, zapsali jsme si ji. Vase VIP pro csgo aktivujeme co nejrychleji." mezitím by se PHP kód napojil do databáze "vipcsgo" a v tabulce "STEAMM_DB_1" by našel "STEAM_1:1:42471801" a přičetl mu hodnotu 250 bodů do položky "points". Omlouvám se, že je to takhle blbě popsaný, ale jinak to napsat či vysvětlit nejde. Děkuji všem za nápady, raději bych bral přímo kompletní PHP kód, ale i tak se pokusím pochopit vaše nápady či návrhy. |
||
Alphard Profil |
#2 · Zasláno: 28. 8. 2013, 20:52:18
Přičíst zvládne jednoduchý update
update tabulka set points = points + 250 where ... |
||
Fastman Profil |
Alphard:
<?php $log_file = FOpen('log.txt', 'a'); // Otevirate soubor FPutS($log_file, Date("Y-m-d H:i:s") . " " . $_GET['text'] . " " . $_GET['price'] . " " . $_GET['debug'] . "\n"); // Zapisujete text z prichozi SMS zpravy FClose($log_file); // Uzavirate soubor echo "Dekujeme za platbu, zapsali jsme si ji. Vase VIP pro csgo aktivujeme co nejrychleji."; // Odpovidate zakaznikovi $server = "localhost"; // jméno serveru $login = "xx"; // přihlašovací jméno $heslo = "xxxx"; // heslo $databaze = "vipcsgo"; // název databáze $table = "STAMM_DB_1"; $text = $_GET['text']; mysql_query("UPDATE STAMM_DB_1 SET points = points + 250 1 WHERE steamid =". $_GET['text'] .""); MySQL_Connect($server, $login, $heslo) or die("Nepodařilo se připojit k databázi"); // připojení k databázi MySQL_Select_DB($databaze) or die("Nepodařilo se otevřít databázi"); // výběr databáze ?> Dobrý den, děkuji vám za odpověď. Zkusil jsem tohle a stejně to nefunguje. Stránka se normálně zobrazí, takže kód by měl být dobrý, ale nezapíše to nic do databáze. Zde je soubor co spouští SMS http://www.xxxx.eu/sms.php?price=30.000&operator=et&text=PM+CSGO+STEAM_1%3A1%3A42471801&hash=gvzfk3&msisdn_gw=9033330&att=1&id=MOJEIDPROTELEFON&emulator=1 |
||
Keeehi Profil |
#4 · Zasláno: 28. 8. 2013, 23:11:32
A nepřijde ti divné, že nejdřív spouštíš dotaz do databáze a pak se k ní snažíš teprve připojit?
v tom updatu jsi asi zapomněl 1 za 250 |
||
abc Profil |
#5 · Zasláno: 28. 8. 2013, 23:19:05
řádek 17. má být až po 18. a 19.
|
||
Fastman Profil |
#6 · Zasláno: 28. 8. 2013, 23:21:14
<?php $log_file = FOpen('log.txt', 'a'); // Otevirate soubor FPutS($log_file, Date("Y-m-d H:i:s") . " " . $_GET['text'] . " " . $_GET['price'] . " " . $_GET['debug'] . "\n"); // Zapisujete text z prichozi SMS zpravy FClose($log_file); // Uzavirate soubor echo "Dekujeme za platbu, zapsali jsme si ji. Vase VIP pro csgo aktivujeme co nejrychleji."; // Odpovidate zakaznikovi $server = "localhost"; // jméno serveru $login = "xx"; // přihlašovací jméno $heslo = "xxxx"; // heslo $databaze = "vipcsgo"; // název databáze $table = "STAMM_DB_1"; $text = $_GET['text']; MySQL_Connect($server, $login, $heslo) or die("Nepodařilo se připojit k databázi"); // připojení k databázi MySQL_Select_DB($databaze) or die("Nepodařilo se otevřít databázi"); // výběr databáze mysql_query("UPDATE STAMM_DB_1 SET points = points + 250 1 WHERE steamid =". $_GET['text'] .""); ?> |
||
Keeehi Profil |
#7 · Zasláno: 28. 8. 2013, 23:25:46
Tak si za to připoj ještě
echo mysql_errno() . ": " . mysql_error(). "\n"; |
||
Fastman Profil |
#8 · Zasláno: 28. 8. 2013, 23:30:22
Keeehi:
1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1 WHERE steamid =' at line 1 Tohle vyběhlo.. |
||
abc Profil |
Jak psal [#4] Keeehi - v tom update je
1 navíc, proto ten update neproleze
|
||
Fastman Profil |
#10 · Zasláno: 28. 8. 2013, 23:33:50
abc:
Tak jsem smazal za 250 tu 1 a ukázalo to tohle 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 |
||
Keeehi Profil |
Fastman:
Můj soukromý tip je, že v GET[text] nic není a pak z toho vzniká syntax error. Tohle ukáže co? var_dump("UPDATE STAMM_DB_1 SET points = points + 250 WHERE steamid =". $_GET['text'] .""); |
||
Fastman Profil |
Keeehi:
<?php $log_file = FOpen('log.txt', 'a'); // Otevirate soubor FPutS($log_file, Date("Y-m-d H:i:s") . " " . $_GET['text'] . " " . $_GET['price'] . " " . $_GET['debug'] . "\n"); // Zapisujete text z prichozi SMS zpravy FClose($log_file); // Uzavirate soubor echo "Dekujeme za platbu, zapsali jsme si ji. Vase VIP pro csgo aktivujeme co nejrychleji."; // Odpovidate zakaznikovi $server = "127.0.0.1"; // jméno serveru $login = "xx"; // přihlašovací jméno $heslo = "xxxx"; // heslo $databaze = "vipcsgo"; // název databáze $table = "STAMM_DB_1"; $text = $_GET['text']; MySQL_Connect($server, $login, $heslo) or die("Nepodařilo se připojit k databázi"); // připojení k databázi MySQL_Select_DB($databaze) or die("Nepodařilo se otevřít databázi"); // výběr databáze var_dump("UPDATE STAMM_DB_1 SET points = points + 250 WHERE steamid =". $_GET['text'] .""); echo mysql_errno() . ": " . mysql_error(). "\n"; ?> to ukáže tohle string(59) "UPDATE STAMM_DB_1 SET points = points + 250 WHERE steamid =" 0: Jak říkám, uživatel odešle SMS "PM CSGO steamid" a právě jsem to vyvodil z toho, že při ukládání do logu používá příkaz $_GET['text'] a celé je to FPutS($log_file, Date("Y-m-d H:i:s") . " " . $_GET['text'] . " " . $_GET['price'] . " " . $_GET['debug'] . "\n"); 2013-08-26 21:43:29 Fastmancz 30.00 Když odešlu (virtuální sms) Dekujeme za platbu, zapsali jsme si ji. Vase VIP pro csgo aktivujeme co nejrychleji.string(85) "UPDATE STAMM_DB_1 SET points = points + 250 WHERE steamid =PM CSGO STEAM_1:1:42471801" 0: |
||
Keeehi Profil |
|||
Fastman Profil |
Keeehi:
Aha omlouvám se.. já blbec zadával do textu "PM CSGO STEAM ID" má tam být jenom "STEAM ID" .. ale stejně to nejde Dekujeme za platbu, zapsali jsme si ji. Vase VIP pro csgo aktivujeme co nejrychleji.string(77) "UPDATE STAMM_DB_1 SET points = points + 250 WHERE steamid =STEAM_1:1:42471801" odkaz se udělal tenhle http://www.xxxxx.eu/vip/sms.php?price=30.000&operator=et&text=STEAM_1%3A1%3A42471801&hash=gvzfk3&msisdn_gw=9033330&att=1&id=xxxxxxxxxx&emulator=1 |
||
Rfilip Profil |
#15 · Zasláno: 29. 8. 2013, 00:06:01
Kdyz si ten dotaz date do phpmyadminu vykona se?
|
||
Fastman Profil |
#16 · Zasláno: 29. 8. 2013, 00:10:04
Rfilip:
Hodí to podobné chyby jako to bylo tady #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'var_dump("UPDATE STAMM_DB_1 SET points = points + 250 WHERE steamid =". $_GET['t' at line 1 Tohle se vykonalo, když jsem si points změnil přímo v databázi (manuálně). UPDATE `vipcsgo`.`STAMM_DB_1` SET `points` = '350' WHERE `STAMM_DB_1`.`steamid` = 'STEAM_1:1:42471801'; |
||
Keeehi Profil |
#17 · Zasláno: 29. 8. 2013, 00:15:02
Ok, tak to ještě obal uvozovkami a mohlo by to fungovat. Evidentně steamid je sloupec nějakého textového typu. A nebo ne?
|
||
abc Profil |
Fastman:
Když víš, jak má vypadat výsledný dotaz, tak pak už snad není těžké nahradit tam údaje proměnnými ze skriptu ne? UPDATE `vipcsgo`.`STAMM_DB_1` SET `points` = `points` + 250 WHERE `STAMM_DB_1`.`steamid` = 'STEAM_1:1:42471801'; $sql = "UPDATE `vipcsgo`.`STAMM_DB_1` SET `points` = `points` + 250 WHERE `STAMM_DB_1`.`steamid` = '$_GET[text]'"; |
||
Keeehi Profil |
Nebo bezpečněji
$sql = "UPDATE `vipcsgo`.`STAMM_DB_1` SET `points` = `points` + 250 WHERE `STAMM_DB_1`.`steamid` = '".mysql_real_escape_string($_GET["text"])."'"; |
||
Fastman Profil |
Keeehi:
Dobrý den, Děkuji Vám za odpověď. Zkusil jsem váš kód zapsat do PHP <?php $log_file = FOpen('log.txt', 'a'); // Otevirate soubor FPutS($log_file, Date("Y-m-d H:i:s") . " " . $_GET['text'] . " " . $_GET['price'] . " " . $_GET['debug'] . "\n"); // Zapisujete text z prichozi SMS zpravy FClose($log_file); // Uzavirate soubor echo "Dekujeme za platbu, zapsali jsme si ji. Vase VIP pro csgo aktivujeme co nejrychleji."; // Odpovidate zakaznikovi $server = "127.0.0.1"; // jméno serveru $login = "xxx"; // přihlašovací jméno $heslo = "xxxx"; // heslo $databaze = "vipcsgo"; // název databáze $table = "STAMM_DB_1"; $text = $_GET['text']; MySQL_Connect($server, $login, $heslo) or die("Nepodařilo se připojit k databázi"); // připojení k databázi MySQL_Select_DB($databaze) or die("Nepodařilo se otevřít databázi"); // výběr databáze $sql = "UPDATE `vipcsgo`.`STAMM_DB_1` SET `points` = `points` + 250 WHERE `STAMM_DB_1`.`steamid` = '".mysql_real_escape_string($_GET["text"])."'"; echo mysql_errno() . ": " . mysql_error(). "\n"; ?> Když se podívám na klasický PHP soubor bez odeslaní sms. Tak to ukazuje tohle: Dekujeme za platbu, zapsali jsme si ji. Vase VIP pro csgo aktivujeme co nejrychleji.0: Když odešlu přes emulátor sms Tak to hodí tohle (jako výsledek odeslané sms). Dekujeme za platbu, zapsali jsme si ji. Vase VIP pro csgo aktivujeme co nejrychleji.0: abc: Když zkusím váš kód, tak je to stejné. Zatím to stále nepřipisuje. Zde ještě uvedu, jak to vypadá při manuálním editování v databázi. Ještě přiložím strukturu |
||
Fastman Profil |
Tam je právě problém, že to píše "Dekujeme za platbu, zapsali jsme si ji. Vase VIP pro csgo aktivujeme co nejrychleji.0:" Tu 0: nevím jestli se jedná o chybu a nebo nějaký údaj. I po odeslání sms se nic nepřipíše. Už nevím, lámu si s tím hlavu už pár hodin. Opravdu nikdo neví, kde může být chyba?
|
||
Časová prodleva: 11 let
|
0