используйте
ob_start ();
в самой верхней части вашего скрипта и
ob_end_flush ( );
внизу вашего скрипта. Этот wil включит буферизацию вывода и ваши заголовки будут созданы после того, как страница будет bufferd.
ОБЩИЕ ПРОБЛЕМЫ:
=============== =====
(скопированный ответ из: source )
1) не должно быть никакого выхода (т.е.
echo..
или HTML-коды) перед командойheader(.......);
.2) удалите любое белое пространство (или новую строку) до
и после
?>
тегов.3) ЗОЛОТОЕ ПРАВИЛО! - проверьте, поддерживает ли этот файл php (а также, если вы
include
другие файлы) UTF8 без кодировки спецификации (а не только UTF-8). Это проблема во многих случаях (потому что кодированный файл UTF8 имеет что-то особенное в начале файла php, которое ваш текстовый редактор не показывает) !!!!!!!!!!!4) После
header(...);
вы должны использоватьexit;
5) всегда используйте ссылку 301 или 302:
header("location: http://example.com", true, 301 ); exit;
6) Включить ошибку составление отчетов. И сообщать об ошибке.
7) Если ни одно из вышеизложенных не помогает, используйте перенаправление JAVSCRIPT (однако, сильно не рекомендуемый метод), может быть последним шансом в пользовательских случаях ...:
echo ""; exit;
Вместо:
if (isdigit(*token) == 1) {
использование:
if (isdigit((unsigned char)*token)) {
Код выполняет:
char* hold = malloc(64);
, а затем выполняет циклы:
while (/* ... */) {
// ...
sprintf(hold,"%d",total);
push(&root, hold);
// ...
}
Это приводит к тому, что все значения, хранящиеся в стеке, совместно используют одно и то же хранилище и перезаписываться при изменении hold
.
Распределение должно происходить при каждом использовании:
char *hold;
// ...
while (/* ... */) {
// ...
hold = malloc(64);
sprintf(hold,"%d",total);
push(&root, hold);
// ...
}