@FanatPHP: я писал, что в первом случае речь идёт о текстовых данных, шабронизатором здесь и не пахнет. Во втором случае, всё будет работать именно как шаблонизатор
Хазрат Гаджикеримов: можно использовать и include, разница лишь в реакции на отсутствие файла. strtr с указанием вторым аргументом всех пар для замены отработает быстрей, нежели перебор массива со множественным str_replace. Речь идёт, разумеется, о текстовых данных
В добавок посоветую сделать не один токен на пользователя, а связанную таблицу (user<-token). Бывает ситуация, когда требуется несколько токенов. Например, смена E-Mail (да, можно выслать токен, запросить новый email, выслать новый токен на новый email, но это неудобно). Это позволит сделать систему подтверждения более гибкой
Зайдите на веб-интерфейс роутера (введите в браузере, в адресной строке http://<ip адрес роутера>), введите от него пароль (если Вы его никогда не задавали, скорее всего он написан на нижней стороне роутера, обычно это admin:admin). Найдите там настройки подключения (Network/WAN, возможно нужно зайти в раздел Advanced). В общем, где-то там нужно изменить этот параметр и переподключиться для уверенности
По поводу GD — попробуйте использовать полный путь к файлу. Помнится мне, тоже встречался с подобного рода проблемой, но ответ был в соседних строках кода.