Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Вынести вывод шифра из функции
Форумы портала PHP.SU » » Объектно-ориентированное программирование » Вынести вывод шифра из функции

Страниц (1): [1]
 

1. Nooo - 15 Апреля, 2012 - 19:44:20 - перейти к сообщению
Здравствуйте, подскажите как изменить вывод зашифрованной строки? сейчас вывод прописан в функции "code" И выглядит так "echo $key;"... как его вынести за приделы функции?

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. define('CRYPT_KEY','dPfsdfF95bfG4Wmls9J');
  3. function code($source) {
  4.         $key = CRYPT_KEY;
  5.         $s = "";
  6.  
  7.         // Открывает модуль
  8.         $td = mcrypt_module_open('des', '', 'ecb', '');
  9.         $key = substr($key, 0, mcrypt_enc_get_key_size($td));
  10.         $iv_size = mcrypt_enc_get_iv_size($td);
  11.         $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
  12.                 echo $key;
  13.         // Инициализирует дескриптор шифрования и шифруем
  14.         if (mcrypt_generic_init($td, $key, $iv) != -1) {
  15.                 $s = mcrypt_generic($td, $source);
  16.                 mcrypt_generic_deinit($td);
  17.                 mcrypt_module_close($td);
  18.         }
  19.         return $s;
  20. }
  21.  
  22. function decode($source) {
  23.         $key = CRYPT_KEY;
  24.         $s = "";
  25.  
  26.         // Открывает модуль
  27.         $td = mcrypt_module_open('des', '', 'ecb', '');
  28.         $key = substr($key, 0, mcrypt_enc_get_key_size($td));
  29.         $iv_size = mcrypt_enc_get_iv_size($td);
  30.         $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
  31.  
  32.         // Инициализирует дескриптор шифрования и дешифруем
  33.         if (mcrypt_generic_init($td, $key, $iv) != -1) {
  34.                 $s = mdecrypt_generic($td, $source);
  35.                 mcrypt_generic_deinit($td);
  36.                 mcrypt_module_close($td);
  37.         }
  38.         return $s;
  39. }
  40.  
  41. $string = "CodePassword";
  42. $code   = code($string);
  43. $decode = decode($code);
  44. echo trim($decode);
  45. ?>
2. OrmaJever - 15 Апреля, 2012 - 20:23:53 - перейти к сообщению
ну раз return там уже есть, то можно передавать второй параметр по сылке.
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. define('CRYPT_KEY','dPfsdfF95bfG4Wmls9J');
  3.  
  4. function code($source, &$key) {
  5.         $key = CRYPT_KEY;
  6.         $s = "";
  7.  
  8.         // Открывает модуль
  9.         $td = mcrypt_module_open('des', '', 'ecb', '');
  10.         $key = substr($key, 0, mcrypt_enc_get_key_size($td));
  11.         $iv_size = mcrypt_enc_get_iv_size($td);
  12.         $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
  13.                 echo $key;
  14.         // Инициализирует дескриптор шифрования и шифруем
  15.         if (mcrypt_generic_init($td, $key, $iv) != -1) {
  16.                 $s = mcrypt_generic($td, $source);
  17.                 mcrypt_generic_deinit($td);
  18.                 mcrypt_module_close($td);
  19.         }
  20.         return $s;
  21. }
  22.  
  23. function decode($source) {
  24.         $key = CRYPT_KEY;
  25.         $s = "";
  26.  
  27.         // Открывает модуль
  28.         $td = mcrypt_module_open('des', '', 'ecb', '');
  29.         $key = substr($key, 0, mcrypt_enc_get_key_size($td));
  30.         $iv_size = mcrypt_enc_get_iv_size($td);
  31.         $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
  32.  
  33.         // Инициализирует дескриптор шифрования и дешифруем
  34.         if (mcrypt_generic_init($td, $key, $iv) != -1) {
  35.                 $s = mdecrypt_generic($td, $source);
  36.                 mcrypt_generic_deinit($td);
  37.                 mcrypt_module_close($td);
  38.         }
  39.         return $s;
  40. }
  41.  
  42. $string = "CodePassword";
  43. $key = '';
  44. $code   = code($string, $key);
  45. $decode = decode($code);
  46. var_dump($key);
  47. echo trim($decode);
  48. ?>
3. Nooo - 15 Апреля, 2012 - 20:39:21 - перейти к сообщению
мне нужно что бы он вывел то что выводит echo $key он выводит "dPfsdfF9"

Но после изменений он стал выводить " string(8) "dPfsdfF9" "
4. OrmaJever - 15 Апреля, 2012 - 20:41:27 - перейти к сообщению
А что выводит echo $key?! Однако
5. Nooo - 15 Апреля, 2012 - 20:43:03 - перейти к сообщению
он выводит "dPfsdfF9"
6. OrmaJever - 15 Апреля, 2012 - 20:53:03 - перейти к сообщению
Нуу... и чем отличается строка "dPfsdfF9" от строки "dPfsdfF9" ?
7. Nooo - 15 Апреля, 2012 - 20:57:01 - перейти к сообщению
нет, echo выводил верно dPfsdfF9 ,а после изменений он стал выводить string(8) "dPfsdfF9" (в кавычках выводит)...
8. avtor.fox - 15 Апреля, 2012 - 23:48:13 - перейти к сообщению
от. var_dump Вам и выводит string(8) "dPfsdfF9" Однако
9. OrmaJever - 15 Апреля, 2012 - 23:54:11 - перейти к сообщению
тю, ну это я же для дебага. Измените var_dump($key); на echo $key;

 

Powered by ExBB FM 1.0 RC1