2014-02-04 3 views
0

Проблема, с которой я в настоящее время сталкиваюсь, заключается в том, что я открываю скрипт с session_start(), и, как мы все знаем, сессия останется до тех пор, пока вы полностью не закроете свой браузер или в течение определенного времени. Это точно моя проблема.Начало сеанса PHP на кнопке

Мне нужно сделать так, чтобы при нажатии Start Button оно будет session_start(), но когда вы нажмете Reset Button, сеанс должен «перезагрузить».

Я читал бесчисленные страницы о сеансах, и я читал тысячи вопросов уже о stackoverflow. Но я действительно не могу найти решение для своей проблемы.

Я слышал, как кто-то сказал, что они связали его, если нажата кнопка, session_start = true. Но я не мог найти объяснений.

Что я пытаюсь сделать, это небольшая игра. Игра BlackJack. А так как мне нужно использовать столько PHP, насколько это возможно я сейчас использую это:

<form method="post"> 
    <input type="hidden" name="form" value="draw"/> 
    <input type="submit" value="Hit"/> 
</form> 

Тогда им с помощью этого PHP с ним:

<?php 

session_start(); 


include_once 'cards_array.php'; 

// cards in hand 
if(!isset($_SESSION["hand"])) $_SESSION["hand"] = array(); 

// draw a card from the pile into the hand 
function draw_card() { 
    if(count($_SESSION["pile"]) > 0){ 
    $card = array_rand($_SESSION["pile"]); 
    $_SESSION["hand"][$card] = $_SESSION["pile"][$card]; 
    unset($_SESSION["pile"][$card]); 
}else{ 
    unset($_SESSION["pile"]); 
    unset($_SESSION["hand"]); 
    session_destroy(); 
} 
} 

function list_hand() { 
foreach($_SESSION["hand"] as $card=>$points) { 
    echo $card; 
    echo ', '; 
} 
} 

// detect which form was triggered 
function FORM($value) { 
    return isset($_POST["form"]) && $_POST["form"]==$value; 
} 

// handle the draw form 
if(FORM("draw")){ 
draw_card(); 
list_hand(); 
} 

include_once 'cards_cases.php'; 

?> 

С cards_array существа:

<?php 
// cards on pile 
if(!isset($_SESSION["pile"])) $_SESSION["pile"] = array(
    2   => 2, 
    3   => 3, 
    4   => 4, 
    5   => 5, 
    6   => 6, 
    7   => 7, 
    8   => 8, 
    9   => 9, 
    10   => 10, 
    'Jack'  => 10, 
    'Queen'  => 10, 
    'King'  => 10, 
    'Ace'  => 11); 
?> 

Извините за сброс этой кодовой бомбы на вас, ребята, но так как я действительно не знаю, что важно или что можно оставить без внимания, и вы рискуете спросить, где x и где y, я бы предпочел разместить большую часть этого в надежде это ясно для вас, t im пытается достичь.

Поскольку я никогда не работал с сеансами до этого, я действительно в недоумении, как то, что могу сделать для своей проблемы. Я не знаю, подходит ли мой код таким образом. Но пока это PHP и может быть улучшен, пожалуйста, дайте мне знать!

Так что в основном моя проблема в том, что мне нужно начинать и заканчивать сеанс с помощью кнопок.

Надеюсь, я объяснил как можно лучше, с чем я борюсь, и я надеюсь, что у одного из вас есть ответ, который я ищу!

Заранее благодарен!

ответ

2

создать страницу выхода из этой страницы

выход из системы.PHP

<?php 
session_start(); // start the same session used before 
session_destroy(); // destroy all session variables 
header("location: /yourpage.php"); // redirect 
exit(); 
?> 

Ваш HTML

... 
<a href="logout.php">LOGOUT</a> 
+0

Большое спасибо! это исправляет кнопку сброса точно так, как я хочу! Если я использую его таким образом, не лучше ли мне настроить главную страницу как logout.php, таким образом, если они закроют браузер и снова войдут в logout.php, он снова будет сброшен? –

+0

Вы можете играть с переменными $ _GET и создавать условия для уничтожения сеансов. – cardeol

+0

На самом деле это не вопрос, но если вы можете ответить на него, это спасет меня много времени и других народов. Возможно ли запустить функцию php при нажатии кнопки. Без использования JavaScript? Насколько я знаю, вы не можете использовать onclicks с помощью PHP, но, возможно, есть обходной путь? Еще раз спасибо! –

1

вы можете удалить одну переменную в сеансе

unset($_SESSION['session_var']); 

или это будет удалить все переменные в сессии, но не сеанс самого

session_unset(); 

это разрушит переменные сессии

session_destroy(); 
+0

Спасибо за ваш ответ, но я бы не стал задавать этот вопрос долго среди всех подобных вопросов, если бы я этого не делал. Session_destroy, отлично работает в card_cases, когда мои очки составляют> 21. –

0

Когда страница не загружается не более PHP скрипты выполняются, поэтому вам необходимо отправить запрос AJAX на сервер при нажатии на кнопку и начать сеанс на него ,

Возможно, вам нужно будет прочитать о jQuery AJAX-поиске в google.

Смежные вопросы