Autor Zpráva
valecekm
Profil
Dobrý den. Chtěl bych požádat zkušenější programátory jestli by nevěděli jak vyřešit danej problém:

Odeslanej text šifruji pomocí tohodle Odkaz , ale to tak že každej uživatel má svůj klíč. Proměnnou $key_crypt_decrypt sem předtím nastavil jako KONSTANTU, problém nebyl v tom když sem rozšifrovával zprávu od jednoho a toho samého uživatele, ale nastal tehdy když sem se snažil poté rozšifrovat zprávu jiného. Proč? Protože hodnota klíče je konstanta a tu nejde změnit a co uživatel to jinný klíč :-( . Rozšifrovávání probíha v cyklu. Potřeboval bych předtím než zavolám rozšifrování nějak do dané třídy napasovat jinou hodnotu promenné $key. Zkoušel jsem to i přes globální prom., ale to jaksi nešlo(doufam že jsem to nedělal špatně). S Objekt. programováním v PHP velké zkušenosti bohužel nemam :-( .

Ukázka:
<?php
class Crypt_Zprava {

        private static $key = KEY_CRYPT_DECRYPT;
  /* atd. */
}
/* bla bla bla atd. */
while($blabla = MySQL_Fetch_Array($query_blabla)):
//definovana konstanta klice pro sifrovani a desifrovani zpravy
$key_crypt_decrypt = "pokaždé jiný";
define("KEY_CRYPT_DECRYPT", $key_crypt_decrypt);
$decrypted = Crypt_Zprava::decrypt($vzkaz);
/* bla bla bla atd. */
endwhile;	
?>


Pokud by jste někdo veděl jak nato, aby se $key v dané třídě měnila budu moc rád když napíšete. Teď sem momentálně v bezvýchodné situaci. Díky
retro
Profil *
Jestli jsem správně pochopil:
Protože $key je statická vlastnost (Crypt_Zprava::$key), můžete jí nastavovat z toho cyklu.

Kód uvnitř smyčky while potom bude něco jako :

$key_crypt_decrypt = "pokaždé jiný";
Crypt_Zprava::$key = $key_crypt_decrypt;
$decrypted = Crypt_Zprava::decrypt($vzkaz);
retro
Profil *
Ale $key potom musí být public. Nebo to udělat přes setter (public metoda, co to nastaví).

Kód pro public $key
class Crypt_Zprava {

        public static $key = KEY_CRYPT_DECRYPT;
  /* atd. */
}
valecekm
Profil
retro:
Mockrát děkuji. Funguje teď už jak má. Ještě jednou dík ;-)

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: