Autor Zpráva
Fastman
Profil
Dobrý den,

Mám tenhle problém.


Zde mám skript.
<?php
    $log_file = FOpen('log.txt', 'a');  // Otevirate soubor

    FPutS($log_file, Date("Y-m-d H:i:s") . " " . $_GET['sms'] . " " . $_GET['country'] . " " . $_GET['operator'] . " " . $_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['sms'];
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` + 300 WHERE `STAMM_DB_1`.`steamid` = '$_GET[sms]'"; 
$result=mysql_query($sql) or trigger_error(mysql_error().$sql);

?>

Do položky $_GET[sms] se odesílá zpráva z SMS. Formát SMS je tenhle "PM CSGO steamid". Problém je, že v tabulce steamid jsou jenom položky "STEAM_1:1:42471801" a ono to odesílá kompletní SMS "PM CSGO STEAM_1:1:42471801" a já potřebuji, aby to odeslalo jenom "STEAM_1:1:42471801" do databáze. Nevíte jak zakázat či omezit ten text "PM CSGO"? Aby se neodesílalo do databáze jenom "STEAM_1:1:42471801".

Vím je to výzva, ale co se dá dělat, děkuji Vám za odpovědi.

*Prostě to posílá do databáze celou SMS "PM CSGO STEAM_1:1:42471801" a to nemůže logicky vyhledat, když jsou v položce steamid jenom "STEAM_x:x:xxxxxx" a já potřebuji nějak zakázat či omezit nebo blokovat, a nebo aby to počítalo od nějakého písmena ten záznam.. už nevím. Jak udělat, aby to neodeslalo PM CSGO do databáze...

Tady je konfigurace daného skriptu:

http://fastmancz.sweb.cz/technicka-specifikace-mobilniplatby-cz.pdf
han5vk
Profil
$sms="PM CSGO STEAM_1656461651649846blabla";
$doDB=preg_replace("/PM CSGO /","",$sms);
?
Teda, ak sú všetky SMSky presne v tomto tvare. Ak nie, dalo by sa vydolovať pomocou preg_match to STEAM ID z iného kontextu.
Fastman
Profil
han5vk:
no oni odešlou sms ve tvaru "PM CSGO steamid" což je například "PM CSGO STEAM_1:1:42471801" no a já potřebuji aby to do databáze neodeslalo "PM CSGO" ale jenom "STEAM_1:1:42471801". I tak díky za odpověď.


Stejně to nefunguje :(
yFang
Profil
Fastman:
To co psal han5vk funguje, stačí to nahradit v tom dotazu:
<?php
$sql = "UPDATE `vipcsgo`.`STAMM_DB_1` SET `points` = `points` + 300 WHERE `STAMM_DB_1`.`steamid` = '" . preg_replace("/PM CSGO /","",$_GET[sms]) . "'";

Případně se dá obdobně použít funkce str_replace:
<?php
str_replace("PM CSGO ", "",$_GET[sms]) 
Fastman
Profil
yFang:

Díky moc, vše funguje! Jsi vážně chytrý. :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: