各位牛人请帮帮小弟,本人以前搞jsp的,现在刚学php开发,遇到几个匪夷所思的事情:1.session莫名其妙丢失在注册页面,我的目标是等用户点击SAVE后,session中加入userid,这样就知道已经登陆了,可是我填完信息之后,点击save,奇怪的发现页面停止了一段时间后直接告诉我,页面crash!但是发现数据已经存进去了,更奇怪的是我在到login页面去登陆,发现刚刚存进去的数据竟然登陆不进去!长期排查之后,我发现只要在我给session赋值 之前 加上session_destroy,便可以顺利的避免页面crash,但是跳到下一页后竟然说我session丢失?直接给我指到登陆页面去重新登录,要知道我刚才已经给session赋值了,请牛b人指导指导!!代码如下:<?php session_start();
if(!isset($_SESSION['user_id'])){
if(isset($_COOKIE['user_id'])&&isset($_COOKIE['firstname'])){
$_SESSION['user_id']=$_COOKIE['user_id'];
$_SESSION['firstname']=$_COOKIE['firstname'];
}
}
?><?php require_once('constants.php');

if(isset($_SESSION['user_id'])){
echo '<p>You have been loggined, where do you go? </p>';
//echo "<meta   http-equiv='refresh'content=2;URL='StudentProfile.php'>";
echo '<p><a href="FrontPage.php">Home Page</p>';
//exit();
//echo "<meta   http-equiv='refresh'content=1;URL='StudentProfile.php'>";
}
if(isset($_POST['submit'])){
session_destroy();

$dbc = mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_NAME)or die('Database Error 2!');



$firstname = mysqli_real_escape_string($dbc,trim($_POST['firstname']));//$_POST['firstname'];

$lastname = mysqli_real_escape_string($dbc,trim($_POST['lastname']));//$_POST['lastname'];
$password = mysqli_real_escape_string($dbc,trim($_POST['password']));//$_POST['password'];
$email = mysqli_real_escape_string($dbc,trim($_POST['email']));//$_POST['email'];
$phonenumber = mysqli_real_escape_string($dbc,trim($_POST['phonenumber']));//$_POST['phonenumber'];

if(!empty($firstname)&&!empty($lastname)&&!empty($password)&&!empty($email)&&!empty($phonenumber)){
$querysearch = "select * from users where email_address='$email'";
$data = mysqli_query($dbc,$querysearch);

if(mysqli_num_rows($data)==0){
$queryinsert = "insert into users(first_name,last_name,password,email_address,phone_number,create_datetime)values('$firstname','$lastname',SHA('$password'),'$email','$phonenumber',NOW())"; 
mysqli_query($dbc,$queryinsert)or die("Query Error !");


$row = mysqli_fetch_array($data);

//session_destroy();
if(!isset($_SESSION['firstname'])&&!isset($_COOKIE['firstname'])){
 $_SESSION['user_id']=$row['uid'];
 $_SESSION['firstname'] = $row['first_name'];
 setcookie('user_id', $row['uid'], time() + (60 * 60 * 24 * 30));  // expires in 30 days
            setcookie('firstname', $row['first_name'], time() + (60 * 60 * 24 * 30));  // expires in 30 days
}


echo "<p>Your new account has been successfully created !</p>";
echo '<script language="JavaScript">window.location.href="StudentProfile.php";</script>';




mysqli_close($dbc);
exit();
}else{
echo "<script>alert('An account already excists !')</script>";


}
}else{
echo "<script>alert('Please enter all of the sign-up data !')</script>";
}

}

else{
//echo "dddddddddddddddd";
?>
<html>
<head>
</head>
<h2>Register</h2>
 
<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
     <label for="firstname">First Name : </label>
        <input type="text" id="firstname" name="firstname"/><br/><br/>
        <label>Last Name : </label>
        <input type="text" id="lastname" name="lastname"/><br/><br/>
        <label>Password : </label>
        <input type="password" id="password" name="password"/><br/><br/>
        <label>Email : </label>
        <input type="text" id="email" name="email"/><br/><br/>
        <label>Phone Number : </label>
        <input type="text" id="phonenumber" name="phonenumber"/><br/><br/>
        <input type="submit" value="Sign Up" name="submit"/><input type="button" value="Cancel" onClick="window.location='login.php'"/>
        
    
    </form>
    </html>
<?php}
?>
2.$result得到的数据不完全,我从数据库中选出两条记录一条记录5列, $row=mysqli_fetch_array($data); mysqli_num_rows返回的是2,表示得到的是两条记录,sizeof($row)也是10,但是当我循环出来的时候for($j=0;$j<sizeof($row);$j++)竟然只有第一条记录的5列数据,第二条根本没有,我打印$row[6],也没有任何
显示,这两个问题太奇怪了,网牛人指点,这段代码如下:
<h2>My Essay</h2><?php
//error_reporting(5);
 if (!isset($_SESSION['user_id'])) {
    if (isset($_COOKIE['user_id']) && isset($_COOKIE['firstname'])) {
      $_SESSION['user_id'] = $_COOKIE['user_id'];
      $_SESSION['firstname'] = $_COOKIE['firstname'];
    }
  }
 
?><?php
require_once('constants.php'); if(!isset($_SESSION['user_id'])){
 echo '<p class="login">Please <a href="login.php">log in</a> to access this page.</p>';
     exit();
}else{

     echo('<p class="login">You are logged in as ' . $_SESSION['firstname'] . '. <a href="Quit.php">Log out</a>.</p>');
  


$dbc = mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_NAME)or die('Database Error 2!');

$query="select edit_date,submited_essay_type,version_id,submited_essay,submited_essay_size from essay_change_history where version_id=1";

$data = mysqli_query($dbc,$query);
$row = mysqli_fetch_array($data);
echo "..................".sizeof($row);

//for($i=0;$i<=sizeof($row);$i++){
//echo "..................".$row[1];
//echo "...............";

//print_f($row);
//}
//$arraymap = array_map(NULL,$row)

$num = mysqli_num_rows($data);


mysqli_close($dbc);
?>
<html>
<head>
</head> <table>
     <tr>
         <td>Updated Date</td><td>Service Type</td><td>Version</td><td>Your Essay</td><td>Status</td>
        </tr>
     
<?php
if($row!=NULL){



echo '<tr>';



for($j=0;$j<sizeof($row);$j++){
//echo 'size'.sizeof($row);
if($j%5==0 && $j!=0){
echo '</tr><tr>';
}
echo '<td>'.$row[$j].'</td>';

echo $j;


//echo '<tr><td>'.$row['edit_date'].'</td><td>'.$row['submited_essay_type'].'</td><td>'.$row['version_id'].'</td><td>'.$row['submited_essay'].'</td><td>'.$row['submited_essay_size'].'</td></tr>';


}
echo '</tr>';
//unset($value);
}
}
?>
   
 </table>
 </html>