Одним из решений, которое я нашел, было создание просто дополнительного слушателя, который ищет определенный метод, такой как («init» или «start»), и просто вызывает его после создания и внедрения членов.
См. В конфигурации модуля:
@Override
protected void configure() {
bindListener(Matchers.any(), new InitMethodTypeListener());
//...
InitMethodTypeListener:
public class InitMethodTypeListener implements TypeListener {
private static final Logger log = LoggerFactory.getLogger(InitMethodTypeListener.class);
@SuppressWarnings("rawtypes")
static class InitInvoker implements InjectionListener {
@Override
public void afterInjection(final Object injectee) {
try {
log.info("Invoke init() from Class: {}", injectee.getClass().getName());
injectee.getClass().getMethod("init").invoke(injectee);
} catch (final Exception e) {
log.error(e.getMessage(), e);
}
}
public static final InitInvoker INSTANCE = new InitInvoker();
}
@SuppressWarnings("unchecked")
@Override
public <I> void hear(final TypeLiteral<I> type, final TypeEncounter<I> encounter) {
try {
if (type.getRawType().getMethod("init") != null) {
encounter.register(InitInvoker.INSTANCE);
}
} catch (final NoSuchMethodException | SecurityException e) {
// do nothing here, if not init-method found - no call
}
}
}
Возможно, это не прямой путь, но он работает. И поэтому я уверен, что все члены вводятся правильно, когда вызывается метод init.
В этой реализации все объекты, находящиеся под контролем, управляют своим «init» -методом, который будет вызываться автоматически после создания и внедрения объекта.
допустите ошибку его возможное для переопределения настроек по умолчанию хоста путем создания собственного .htaccess файла, и вот большое учебное руководство, если Вы еще не коснулись этого http://www.askapache.com/htaccess/apache-htaccess.html
или если Вы слишком ленивы для изучения, просто создают ".htaccess" файл (да, это - имя файла) на каталоге сайтов, и поместите следующий код
SetEnv session.use_cookies='0';
Используйте ini_set ():
ini_set('session.use_cookies', '0');
Или в Вашем файле php.ini:
session.use_cookies = 0
Можно также поместить ту установку в .htaccess, таким образом, это относится ко всем сценариям, иначе необходимо удостовериться, что код называют по каждому запросу.
Например.
сессия use_cookies php_value 0
Если просто необходимо смочь убить сессию в установленный срок, используйте session_destroy (). Если Вы хотите полностью закончить сессию, вот отрывок, копируют/вставляют прямо из документации:
// Initialize the session.
// If you are using session_name("something"), don't forget it now!
session_start();
// Unset all of the session variables.
$_SESSION = array();
// If it's desired to kill the session, also delete the session cookie.
// Note: This will destroy the session, and not just the session data!
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()-42000, '/');
}
// Finally, destroy the session.
session_destroy();
Способ сделать это состоит в том, чтобы установить сессии самостоятельно.
В центральном включают файл, который все Ваши другие файлы включают (у Вас действительно есть один из тех, правильно?), необходимо сделать, несколько вещей уже практичны.
if( !array_key_exists('sessionid', $_POST) ) {
// recreate the sessionid
$sessionid = md5(rand().' '.microtime()); // Or something
} else {
$sessionid = $_POST['sessionid'];
session_id($sessionid);
session_start();
Теперь необходимо помнить, что, как только Вы запускаете форму, необходимо включать:
<input type='hidden' name='sessionid'><?= session_id() ?></input>