1--TEST-- 2Test libmemcached encryption 3--SKIPIF-- 4<?php 5include dirname (__FILE__) . '/config.inc'; 6if (!extension_loaded("memcached")) die ("skip"); 7if (!Memcached::HAVE_ENCODING) die ("skip no set_encoding_key support enabled"); 8if (Memcached::LIBMEMCACHED_VERSION_HEX < 0x01000018) die ("skip test for libmemcached 1.0.18 and higher"); 9?> 10--FILE-- 11<?php 12include dirname (__FILE__) . '/config.inc'; 13$m = memc_get_instance (); 14$key = uniqid ('encoding_test_'); 15 16var_dump ($m->setEncodingKey("Hello")); 17var_dump ($m->set ($key, 'set using encoding')); 18var_dump ($m->get ($key)); 19 20echo "OK" . PHP_EOL; 21 22# Change the encryption key. The old value will be inaccessible. 23var_dump ($m->setEncodingKey("World")); 24var_dump ($m->get ($key)); 25 26echo "OK" . PHP_EOL; 27 28# Restore the original key to retrieve old values again. 29var_dump ($m->setEncodingKey("Hello")); 30var_dump ($m->get ($key)); 31 32echo "OK" . PHP_EOL; 33 34# With a new encoding key we can still write new values, 35# this works as expected with libmemcached 1.0.18 and higher. 36var_dump ($m->setEncodingKey("World")); 37var_dump ($m->get ($key)); 38var_dump ($m->set ($key, 'set using encoding')); 39var_dump ($m->get ($key)); 40 41echo "OK" . PHP_EOL; 42 43?> 44--EXPECT-- 45bool(true) 46bool(true) 47string(18) "set using encoding" 48OK 49bool(true) 50bool(false) 51OK 52bool(true) 53string(18) "set using encoding" 54OK 55bool(true) 56bool(false) 57bool(true) 58string(18) "set using encoding" 59OK 60