Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: MCrypt
Forum PHP.pl > Forum > PHP
My4tic
Witam,

Mam problem z Mcrypt. Niektóre dane nie są zapisywane do mysql. Szyfruje tym loginy userów i w jakiś 99% jest wszystko ok jednak czasami zdarzy się, że po zaszyfrowaniu, wysłaniu do bd i ponownym wczytaniu nie mam nazwy użytkownika - zero danych. Przed zapisaniem jeszcze mysql_real_escape_string, pole w bazie danych - binary. Nie mogę znaleźć powodu :/ Zapytania błędów nie wywalają.

  1. class Crypt {
  2.  
  3. private $iv_size;
  4. private $iv;
  5. private $strKey;
  6.  
  7. public function __construct() {
  8.  
  9. $this->iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
  10. $this->iv = mcrypt_create_iv($this->iv_size, MCRYPT_RAND);
  11. $this->strKey = $arrDefaultConfig['mcryptKey'];
  12. }
  13.  
  14. public function encrypt ($strData) {
  15.  
  16. $strEncryptedData = base64_encode($strData);
  17. $strEncryptedData = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $this->strKey, $strEncryptedData, MCRYPT_MODE_ECB, $this->iv);
  18. return $strEncryptedData;
  19. }
  20.  
  21. public function decrypt ($strData) {
  22.  
  23. $strDecryptedData = trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $this->strKey, $strData, MCRYPT_MODE_ECB, $this->iv));
  24. $strDecryptedData = base64_decode($strDecryptedData);
  25. return $strDecryptedData;
  26. }
  27. }
Darti
a w jaki sposób zapisujesz do bazy ?
sniver
Spróbuj logować błędne zapytania choćby do pliku txt..
Ja tak robię i wychwytuje praktycznie każdy problem związany z zapytaniami

Mój przykład (pisany z palucha więc mogłem zjeść jakiś średnik czy coś...
  1. <?php
  2.  
  3. /**
  4.  * Zapisuje do loga informacje dot. jakiegoś błędu...
  5.  */
  6. function log_exception( $e ) {
  7. $log = 'Dnia: ' . date('Y-m-d') . ', o godzinie: ' . date('H:i:s') . "\n";
  8. $log.= 'Wywolanie z adresu: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] . "\n";
  9. $log.= 'Plik: ' . $e->getFile() . "\n";
  10. $log.= 'Linia: ' . ($e->getLine()-1) . "\n";
  11. $log.= 'Komunikat: ' . ( !$e->getMessage() ? 'Brak wymaganego pliku' : $e->getMessage() ) . "\n";
  12. $log.= "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \n";
  13.  
  14. $file = 'log/error_' . date('y-m-d') . '.log';
  15. if ( !file_exists( $file ) ) {
  16. if ( !mkdir( $file ) ) {
  17. return false;
  18. }
  19. chmod( $file, 0777 );
  20. }
  21.  
  22. $file = fopen($file, 'a+');
  23. fwrite($file, $log);
  24. fclose($file);
  25. return true;
  26. }
  27.  
  28. try {
  29.  
  30. $sql = 'SELECT 2+2 FROM `nieIstniejacaTabela`';
  31. if( !$db->query($sql) ) {
  32. throw new Exception( 'Blad SQL! Zapytanie: "' . $sql . '"' );
  33. }
  34.  
  35. }
  36. catch( Exception $e ) {
  37. log_exception( $e )
  38. }
  39. ?>


PS. Pomijam kwestie łączenia do bazy, wybór samej bazy etc....obiekt $db odpowiada za komunikacje z np. mysql...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.