Autor Zpráva
sniclman
Profil *
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
mysql_query("UPDATE objednavky SET paid='".$_POST["mc_gross"]."' WHERE sha1(group_concat('4Er59',md5(concat(orderno,'jR1')),'Lf2eXE'))='".$_POST["invoice"]."'");
Taps
Profil
sniclman, Virtus:
pozor na SQL injection, vhodné by bylo post hodnoty ošetřit.
sniclman
Profil *
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"])."'");

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:

0