Autor | Zpráva | ||
---|---|---|---|
sniclman Profil * |
#1 · Zasláno: 26. 11. 2014, 18:11:51
Zdravím, potřeboval bych poradit ohledně změny dat v databázi s kódovanou hodnotou.
V následujícím kódu používám funkci SECPASS, která zakóduje hodnotu přes MD5 a SHA1. Je možné nějakým způsobem vytvořit v mysql příkaz, který by provedl update jen u řádků kde by byla hodnota sloupce "orderno" rovna $_POST["invoice"]. Problém je, že POST je kódovaný přes zmiňovanou funkci secpass a nevím jak správně vložit tuto funkci do MYSQL dotazu k hodnotě sloupce "orderno". Původně jsem chtěl použít tohle ale nefunguje to mysql_query("UPDATE objednavky SET paid='".$_POST["mc_gross"]."' WHERE ".secpass("orderno")."='".$_POST["invoice"]."'"); Aktuálně používám tento kód: if($payment_status == 'Completed'){ //mysql_query("UPDATE objednavky SET paid='".$_POST["mc_gross"]."' WHERE orderno='".$_POST["invoice"]."'"); $sql = mysql_query("SELECT * FROM objednavky WHERE id>0"); while($fetch = mysql_fetch_array($sql)){ if(secpass($fetch["orderno"]) == $_POST["invoice"]){ mysql_query("UPDATE objednavky SET paid='".$_POST["mc_gross"]."' WHERE orderno='".$fetch["orderno"]."'"); break; } } } exit; Zde je ještě funkce secpass function secpass($string) { return sha1("4Er59e".md5($string."jR1")."Lf2eXE"); } Děkuji předem za veškeré rady. |
||
Virtus Profil |
#2 · Zasláno: 26. 11. 2014, 18:33:07
mysql_query("UPDATE objednavky SET paid='".$_POST["mc_gross"]."' WHERE sha1(group_concat('4Er59',md5(concat(orderno,'jR1')),'Lf2eXE'))='".$_POST["invoice"]."'"); |
||
Taps Profil |
#3 · Zasláno: 26. 11. 2014, 19:45:45
sniclman, Virtus:
pozor na SQL injection, vhodné by bylo post hodnoty ošetřit. |
||
sniclman Profil * |
#4 · Zasláno: 26. 11. 2014, 19:47:11 · Upravil/a: sniclman
Virtus:
Mockrát děkuji. Myslím že tohle mi docela pomůže v budoucnu. Asi je někde nějaký problém ale nefunguje to. Tak už jsem na to přišel. Problém dělal group_concat a pak ještě chyběl jeden znak "4Er59e" --> "4Er59" mysql_query("UPDATE objednavky SET paid='".$_POST["mc_gross"]."' WHERE sha1(concat('4Er59e',md5(concat(orderno,'jR1')),'Lf2eXE'))='".secpass($_POST["invoice"])."'"); |
||
Časová prodleva: 9 let
|
0