[TUT][PHP] Zapis SMS do DB

Začínáte programovat, potřebujete s něčím poradit nebo máte snad nějaký návod? Pak je tato sekce přímo pro Vás!
Odpovědět
Uživatelský avatar
Avazy
BANNED
BANNED
Příspěvky: 129
Registrován: 07 črc 2012 15:50

[TUT][PHP] Zapis SMS do DB

Příspěvek od Avazy » 11 črc 2012 16:41

Zdravím,

Jelikož hodně lidí se mě ptá jak jsem na

Kód: Vybrat vše

http://www.mobilniplatby.cz
(nebrat jako reklamu) udělal, že když dojde sms zapíše se mi do DB.

tady je script vč. vysvětlivek formou komentářů.

Kód: Vybrat vše

<?php
//připojení k DB
$server = "IP"; // jméno serveru
$login = "JMENO"; // přihlašovací jméno
$heslo = "IP"; // heslo
$databaze = "DB"; // název databáze kde máte sql soubor (je níže)
$tabulka = 'ucty';

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

$id = $_GET['text']; //Definování textu ze sms třetí slovo
//váš tvar sms je většinou PM NECO
//a to co je dané za NECO třeba číslo 10000 je ta $id = $_GET['text']

$smss = mysql_query("SELECT * FROM $tabulka WHERE id='{$id}'"); //Vyber z tabulky podle ID zadaného v sms

while($sms = mysql_fetch_array($smss)){
//Switch funkce když nekdo posle sms v urcite hodnote

switch ($_GET['price']) {
    case 10.00: // sms ceny 10 CZK ( 903 33 10 )
$cena = '0.10'; // pocet kreditu kolik dostanete
$kcena = $sms['kredit'] + $cena; //pricteni kreditu
        break; //Ukončení case 10.00: (tak je to u všch)
    case 20.00:
$cena = '0.20';
$kcena = $sms['kredit'] + $cena;
        break;
    case 30.00:
$cena = '0.30';
$kcena = $sms['kredit'] + $cena;
        break;
    case 50.00:
$cena = '0.50';
$kcena = $sms['kredit'] + $cena;
        break;
    case 79.00:
$cena = '0.80';
$kcena = $sms['kredit'] + $cena;
        break;
    case 99.00:
$cena = '1.2';
$kcena = $sms['kredit'] + $cena;
        break;
}
   }
   if($_GET['hash'] == 'emulator') die('EMULATOR NENI POVOLEN'); //Zablokování spamování sms přes testovací emulátor

   else{
//pokud je sms poslaná z mobilu a ne z emulátoru (co ma mobilniplatby.cz) na webu
//tak se ptovede tohle

$query = mysql_query("UPDATE $tabulka SET kredit = '{$kcena}' WHERE id='{$id}'")or die(mysql_error().' na radku update'); //Zapsání kreditu uživateli

echo "Kredit na ID {$id} zvysen na {$kcena}"; //Odpověd poocí SMS
}
?>

SQL

Kód: Vybrat vše

CREATE TABLE `ucty` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `jmeno` varchar(255) DEFAULT NULL,
  `kredit` varchar(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
INSERT INTO `ucty` VALUES ('1', 'Test', '10.2');
Nepřeješ si Reupload Svých Souborů ?
Pak tedy Neuploaduj!


Ano na Té fotce jsem to já !

Jsme tu dva Já, a Můj Syn ;) na Fotce je Syn!
Uživatelský avatar
spyware4me
Pilot
Pilot
Příspěvky: 638
Registrován: 23 srp 2005 21:49
Bydliště: Spyware
Dal poděkování: 5 poděkování
Dostal poděkování: 27 poděkování
Kontaktovat uživatele:

Re: [TUT][PHP] Zapis SMS do DB

Příspěvek od spyware4me » 11 črc 2012 16:49

Co když ti přijde takovýto krásný vstup:

Kód: Vybrat vše

$_GET['text']="0'; DELETE FROM 'ucty"
There are 10 types of people. Those who understand binary and the others.
Uživatelský avatar
Avazy
BANNED
BANNED
Příspěvky: 129
Registrován: 07 črc 2012 15:50

Re: [TUT][PHP] Zapis SMS do DB

Příspěvek od Avazy » 11 črc 2012 17:22

opravnění připojeneho učtu ke scriptu má omenené oprávnění pouze na update a select

a jak by dostal název tabulky a věděl kde se nachází script ?
Nepřeješ si Reupload Svých Souborů ?
Pak tedy Neuploaduj!


Ano na Té fotce jsem to já !

Jsme tu dva Já, a Můj Syn ;) na Fotce je Syn!
Uživatelský avatar
spyware4me
Pilot
Pilot
Příspěvky: 638
Registrován: 23 srp 2005 21:49
Bydliště: Spyware
Dal poděkování: 5 poděkování
Dostal poděkování: 27 poděkování
Kontaktovat uživatele:

Re: [TUT][PHP] Zapis SMS do DB

Příspěvek od spyware4me » 11 črc 2012 17:41

Někdo jiný oprávnění nemusí nastavit správně.

Kde to vezme?
Bývalý zaměstnanec, zaměstnanec druhé strany, odposlech spojení, pokus-omyl, ...

Důležité je, že ten skript je nebezpečný, přitom stačí kontrolovat vstup.
V tomto případě (za předpokladu, že sloupec id je celočíselná hodnota):

Kód: Vybrat vše

$id = (int) $_GET['text'];
Jinde postačí mysql_real_escape_string nebo mysqli_real_escape_string.
There are 10 types of people. Those who understand binary and the others.
Uživatelský avatar
Avazy
BANNED
BANNED
Příspěvky: 129
Registrován: 07 črc 2012 15:50

Re: [TUT][PHP] Zapis SMS do DB

Příspěvek od Avazy » 11 črc 2012 17:42

nebo stačí explode textu sms a proěnení na funkce
Nepřeješ si Reupload Svých Souborů ?
Pak tedy Neuploaduj!


Ano na Té fotce jsem to já !

Jsme tu dva Já, a Můj Syn ;) na Fotce je Syn!
Uživatelský avatar
Pilgrim
Provider Gold
Provider Gold
Příspěvky: 84
Registrován: 10 úno 2007 22:03
Dal poděkování: 2 poděkování
Dostal poděkování: 6 poděkování
Kontaktovat uživatele:

Re: [TUT][PHP] Zapis SMS do DB

Příspěvek od Pilgrim » 21 čer 2013 18:55

Tak to je bezesporu nejhorší PHP kód, co jsem kdy viděl, jehož autor je sice už zabanovaný, ale už jen z logiky toho skriptu, bych se s tím rozhodně nikde nechlubil.

Nejvíc mě rozsekal ten die() na konci :-D Takže nechám projet celej skript včetně připojení na DB apod a na konci zjistim, že je to vlastně emulátor, tak to killnu. OMG.

Kód: Vybrat vše

if($_GET['hash'] == 'emulator') die('EMULATOR NENI POVOLEN'); //Zablokování spamování sms přes testovací emulátor
Vůbec to není ošetřený na vstupy, jak psal spyware4me.
Další věc je ta, že ten text na konci se asi přes bránu, která ten skript volá, odešle zpět SMS odesílateli. Tak to musí být strašně super, když mu tam příjde jakýkoliv text ze všech die() funkcí v případě nějaké chyby :-)

Kód: Vybrat vše

echo "Kredit na ID {$id} zvysen na {$kcena}"; //Odpověd poocí SMS
A tohle
nebo stačí explode textu sms a proěnení na funkce
to jsem teda už vůbec nepochopil :-D
Učit se, učit se, učit se.
Obrázek
Odpovědět

Zpět na „Programování“