2014-10-28 7 views
0

Эти кодовые слова хорошо на моем локальном компьютере. Тем не менее, не жить с Годади Shared хостинга. Я тщательно изучил эти вопросы, не повезло.PHP Чтение данных сеанса

Кажется, что данные хранятся правильно в папке/tmp (я вижу, что новые файлы отображаются в каталоге, когда я нажимаю со страницы на страницу). Однако не удастся прочесть данные на следующей странице.

Я дал папке/tmp полный доступ для чтения и записи. И я позвонил в GoDaddy, и они сказали, что все работает правильно на сервере.

Вот код. Первый пользователь на этом сайте, и определенно не мой последний :) Вы очень благодарны за помощь.

PAGE 1 (test1.php)

<?php 

    session_save_path("/tmp"); 
    session_start(); 

    $_SESSION['name'] = "Test"; 

    echo("You should see ".$_SESSION['name']." on the next page"); 

    echo("<br><a href='test2.php'>GO</a>"); 

?> 

PAGE 2 (test2.php)

<?php 

    session_save_path("/tmp"); 
    session_start(); 

    $x = $_SESSION['name']; 

    echo($x."<br>"); 

    echo("<a href='test1.php'>Go Back</a>"); 

?> 
+0

Он отлично работает для меня! Папка должна находиться в той же папке, что и файлы! – Rizier123

+1

'tmp! =/Tmp'. вы пытаетесь получить доступ к папке 'tmp', которая является подкаталогом текущего рабочего каталога этого сценария. например вы в основном выполняете './tmp', который переводится в'/path/to/this/script/tmp', а не '/ tmp' –

+0

Я пробовал session_save_path ("/tmp ") без везения. session_save_path ("tmp"), похоже, работает, поскольку данные отображаются в папке/tmp, но следующая страница не считывает эти данные. –

ответ

-1

Удалить следующую строку и повторите попытку:

session_save_path("tmp"); 

сессии по умолчанию путь должен иметь достаточные разрешения для этого. В настоящее время ваш код ищет каталог под названием «tmp» на том же уровне, что и скрипт.

+0

Не повезло. Я считаю, что Godaddy требует сохранения данных сеанса в папке/tmp. Я создал папку и дал ей право на чтение. –

1

session_save_path требует полного пути. Указав папку как «tmp» без ведущей косой черты, вы поручаете PHP искать папку с именем tmp в той же папке по сравнению с той, в которой выполняется файл. Например, если test1.php бежится из/вар/WWW, он будет пытаться записать данные сессии в/вар/WWW/TMP

+0

Это имеет смысл. На какой путь я должен указать? Я поставил test1.php и test2.php в корневой каталог, чтобы сделать вещи простыми. Должен ли я попробовать что-то другое? –

+0

Если есть веская причина, что вы не можете просто использовать путь сохранения по умолчанию, я бы просто использовал это. Если вы хотите использовать/tmp, вам просто нужно добавить ведущую косую черту: session_save_path ("/ tmp"); – joehart

+0

Файлы добавляются в/tmp, но не удастся прочесть (или потянуть) эти данные на следующей странице. –

1

Во-первых, попробуйте просто:

<?php print_r(session_save_path()); ?> 

// session_save_path () - без параметров укажите фактический адрес каталога.

Он покажет, где находится ваша папка сеанса по умолчанию на сервере хостинга.

Тогда, как только вы получили этот адрес только адаптировать его к временной папке, как это:

<?php 

    //consider a real path here. 
    session_save_path('/home/public_html/temp'); // 'temp' is your directory 
    session_start(); 

    $_SESSION['name'] = "Test"; 

    echo("You should see ".$_SESSION['name']." on the next page"); 

    echo("<br><a href='test2.php'>GO</a>"); 

?> 

Ссылки: http://php.net/manual/en/function.session-save-path.php

удачи;)

+0

ваш print_r производства/TMP Как я нажимаю с одной страницы на другую, файлы добавляются в папку/TMP (т.е. имя файла: sess_07e77aa93e4cf6f03d653dac6119bf73) Проблема следующая страница не читает (или потянув эти данные). Спасибо за вашу помощь –

+0

Ok, так что вы можете попробовать создать файл «php5.ini» и в этом файле поставить это: session.save_path =/TMP Эта строка делает точно то же самое, что и функция выше, с тем чтобы не изменять каждую страницу, на которой используется сеанс. Вы просто модифицируете его. Не забудьте загрузить файл php5.ini снова после изменения! Не забудьте удалить свою строку: session_save_path ('/ home/public_html/temp'); – Rafael

+0

По-прежнему не повезло, пробовал php5.ini. Как расстраивает. Кажется, что сеанс корректно сохраняет данные, просто не прочитав его на следующей странице. Большое спасибо за ваши усилия Рафаэль. –

1

Проблема решена. Извините заранее за то, что вы новичок.

Вы должны поставить session_start(); перед тегом <html>. Я помещал все в <body>. По какой-то причине эта ошибка отлично работала на моем WAMP SERVER. Сервер также сохранял данные в/tmp в порядке, но не извлекал их. Любой, как, вот как это должно быть написано.

<?php 
    session_save_path('/tmp'); 
    session_start(); 
?> 

<html> 

<body> 
    <?php    
     $_SESSION["name"] = "Carry Me";   
    ?> 
</body> 

</html> 

Рафаэль спасибо! Все эти предложения отлично работают сейчас (php5.ini и ini_set). Вы многому научились этому новичку.

Я также узнал, что .user.ini - лучший файл для загрузки для GoDaddy. Обязательно используйте период (.) Перед именем файла и перед ini. Внутри .user.ini, добавьте этот код и загрузите его в корневой каталог.

session.save_path = "/home/username/public_html/tmp" 

Спасибо всем за ваши ответы сегодня.