php 返回页面时 获取登录id 密码

数据库大程 看了几天php没学那么多 有一个问题
这是home.php
<?php
session_start();
$admid=$_POST['severid'];
$admpw=$_POST['severpw'];
$_SESSION['severid']=$admid;
$_SESSION['severpw']=$admpw;
?>
home.php 连接数据库 @ $db = new mysqli('localhost',$_SESSION['severid'],
$_SESSION['severpw'], 'bookdb');

另有borrow.php giceback.php 都使用了$_SESSION['severid']和 $_SESSION['severpw'] 我在这两个php结尾处加了
<a href="home.php">Return home</a>
为了得到可以返回继续操作的效果
但是这样返回之后 home.php 就连接不上数据库了
是不是因为$_SESSION['severid']=$admid;
$_SESSION['severpw']=$admpw; 在home.php中被重置了,他们都是之前通过POST获取的 是不是他们都变成0了?
请问有什么好的办法吗??
LZ又遇到问题了 无语 — —
$query= "select min(returntime) from bookrecord where bid= ' ".$bookid." ' " ;
//returntime是varchar
$result = $db->query($query);
$row = $result->fetch_assoc();
echo stripslashes($row['returntime'])."<br />";
在php中 select returntime 不是min(returntime)是可以输出的的
只要有了 select min(returntime) 死活不能输出结果 我在mysql上做同样的查询可以输出结果的
难道有什么变态的转义??? 还是php不支持min() 输入内容绝对没问题 啊啊啊啊

肯定被重置了,其实非常简单。向home.php提交数据时,要把数据写入session。如果返回home页,没有提交数据,但是还是把空数据写入了session.所以会出错 。
解决方法很简单。
判断有没有提交数据,如果有提交数据,再向session写入数据。否则 ,就没有必要把数据写入session
<?php
session_start();
$admid=$_POST['severid'];
$admpw=$_POST['severpw'];
//先判断有没有post提交数据,如果有,则写入session
if($_POST) {
$_SESSION['severid']=$admid;
$_SESSION['severpw']=$admpw;
}
?>
这样就保证了 session里的用户id与密码是登录页提交的。不会被重置掉。
欢迎有问题大家交流。追问

哦哦,谢谢~~ 这样是不是只要传递了一个变量 $_POST判断就为真 两个SESSION都会重置了?

追答

只有登录面向home.php提交数据时,$_POST,才会有数据,如果其它页面也要向home.php提交数据,就判断 $($_POST['severid']&&$_POST['severpw']) ,保证是登录页向home.php提交的数据。保证其它页面过来不会重置session

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-21
home.php
<?php
session_start();
$admid=$_POST['severid'];
$admpw=$_POST['severpw'];
if(isset($_POST['severid']) && isset($_POST['severpw'])){
/*加上if判断,有传入$_POST['severid'],$_POST['severpw']的时候才替换session的值*/
$_SESSION['severid']=$admid;
$_SESSION['severpw']=$admpw;
}
unset($_POST['severid']); //销毁$_POST['severid']
unset($_POST['severpw']); //销毁$_POST['severpw']
?>
第2个回答  2012-05-20
1.$_SESSION['severpw']的确被重置
2.变成null
3.在home.php添加一个SESSION判断,例如你在前面已经得到$_SESSION['severid']的值,那么
if($_SESSION['severid'] == "XXX"){
$db = new mysqli('localhost',$_SESSION['severid'],$_SESSION['severpw'], 'bookdb');
<--!直接连接数据库-->
}else{
$admid=$_POST['severid'];
$admpw=$_POST['severpw'];
$_SESSION['severid']=$admid;
$_SESSION['severpw']=$admpw;
$db = new mysqli('localhost',$_SESSION['severid'],$_SESSION['severpw'], 'bookdb');
<--!传入参数后再连接数据库-->
}追问

之前是有个login.php 输入用户名密码,提交后跳转到home.php 而执行borrow giveback等操作后 直接返回到home.php中 所以用户名密码不能再传进来了吧。
我想到一个办法 在login和home之间再插入一个php 比如 start.php
$_SESSION['severid']=$admid;
$_SESSION['severpw']=$admpw;
变量从这传进来 然后home中直接用$_SESSION 变量 这样返回home还可以直接用吧

第3个回答  2012-05-23
最好有个单独处理登录的页面,例如login.php,就不会有这种情况了,如果实在想用你这种方法应加一个判断例如
<?php
session_start();
if(isset($_POST['severid']) && isset($_POST['severpw']))
{
$admid=$_POST['severid'];
$admpw=$_POST['severpw'];
}
$_SESSION['severid']=$admid;
$_SESSION['severpw']=$admpw;
?>

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网