提交按钮在相同的PHP脚本上发送值,尝试使用会话

问题描述:

I have searched a lot but cannot find a solution yet. Hope anyone can help me with it, I will really appreciate.

I use a php news page with session. PHP script displays 10 news and if there is more news, visitor suppose to click "Next" button (I try to make it work with tag, but it doesn't work with usual submit button either). Page refresh using same script adding a value to page. Everything seemed to work except session. $_SESSION['page'] does not add value. I always come back to Page1.

<?php session_start();?>
<?php
if(isset($_SESSION['page']) && isset($_POST['next'])){
   $_SESSION['page']++;
}
if(isset($_SESSION['page']) && isset($_POST['previous'])){
   $_SESSION['page']--;
}
else{
   $_SESSION['page']=1;
}

....//code reading file with news, counting values etc. that work good
//I tried several options:

//Option:1
if ($l == "en") {
   echo '<p class="sider_link">Page: '.$_SESSION['page'].'. Unread news: '.$news_left;
   echo '<form action="../en/news.php" method="post">';
   echo '<a class="sider_link" href="#" name="next" onclick="this.form.submit()">Next Page</a></form></p>';
}

//Option:2
if ($l == "en") {
   echo '<p class="sider_link">Page: '.$_SESSION['page'].'. Unread news: '.$news_left;
   echo '<form action="../en/news.php" method="post">'
   echo '<input type="hidden" name="next" value="yes" />';
   echo '<a class="sider_link" href="#" onclick="this.form.submit()">Next Page</a></form></p>';
}    

Your first statement works, page is increment. But after the second statement is false, the else condition is called. Page is set to one. To sum up you have an error in your condition.

if(isset($_SESSION['page']) && isset($_POST['next'])){
   $_SESSION['page']++;
}
if(isset($_SESSION['page']) && isset($_POST['previous'])){
   $_SESSION['page']--;
}
else{
   $_SESSION['page']=1;
}

To

if(isset($_SESSION['page']) && isset($_POST['next'])){
   $_SESSION['page']++;
}
else if(isset($_SESSION['page']) && isset($_POST['previous'])){
   $_SESSION['page']--;
}
else{
   $_SESSION['page']=1;
}