2013-12-08 113 views
1

我有一個名爲checklog.php一個單獨的文件,其中包含其中的食譜被上傳到數據庫我想要的用戶ID發佈到數據庫,但我的會議細節嘗試上傳用戶ID到數據庫,會話返回用戶ID爲空?

<?php 
     session_start(); 
     if (!isset($_SESSION['logged'])){ 
      $_SESSION = array(); 
      header('location: login.php'); 
     } 
?> 

和我的主上傳頁面無濟於事

<?php 
require_once ("checklog.php"); 
require_once ("function.php"); 
include_once ("home_start_logged.php"); 
require_once ("db_connect.php"); 
//get form data// 
$_SESSION['userid']== $_POST['userid']; 
$upload = trim($_POST['Upload']); 
$mealname = trim($_POST['mealname']); 
$ingredients = trim($_POST['ingredients']); 
$hours = trim($_POST['hours']); 
$minutes = trim($_POST['minutes']); 
$recipe = trim($_POST['recipe']); 

echo $_SESSION['userid']; 
if(trim($_POST['Submit']) =="Upload"){ 
if($db_server){ 
    //clean the input now we have a db connection// 
    $mealname = clean_string($db_server, $mealname); 
    $ingredients = clean_string($db_server, $ingredients); 
    $hour = clean_string($db_server, $hour); 
    $minutes = clean_string($db_server, $minutes); 
    $recipe = clean_string($db_server, $recipe); 
    $ingredients = clean_string($db_server, $ingredients); 
    $image = clean_string($db_server,$image); 
    mysqli_select_db($db_server, $db_database) ; 


//check whether the recipe exists// 
$query= "SELECT mealname FROM `recipename` WHERE mealname='$mealname'"; 
$result = mysqli_query($db_server, $query); 
if ($row = mysqli_fetch_array($result)){ 
     $message = "Meal already exists. Please try again."; 
    }else{ 
     //upload recipe to database// 
     $query = "INSERT INTO `recipename` (
         mealname, ingredients, hours, minutes, recipe, 
         imagepath, userID) VALUES ('$mealname', 
         '$ingredients','$hours','$minutes','$recipe', 
         '$image','" . $_SESSION['userid'] . "')"; 
     echo query; 
    mysqli_query($db_server, $query) or 
     die("Insert failed. ". mysqli_error($db_server)); 
    } 

我的形式如下:

<form method="post" action="upload.php" enctype="multipart/form-data"> 
    <li> 
Meal Name 
    <input type="text" name="mealname" /> 
    </li> 
    <li> 
Ingredients 
    <input type="text" name="ingredients" /> 
    </li> 
    <li> 
Cooking Time 
    <input type="number" name="hours" placeholder="Hours" /> 
    <input type="number" name="minutes" placeholder="Minutes" /> 
    </li> 
    <li> 
Recipe 
<input type="text" name="recipe"/> 
    </li> 
    <li> 
Have you got a photo? 
    <input type="file" name="image" id="image" size="10"/> 
    </li> 
    <input type="submit" id="submit" name="Submit" value="Upload" /> 
    </form>  

這是我的登錄表單,我定義$ _SESSION

<?php 
require_once ("function.php"); 
    //get form data// 
    $username = trim($_POST['username']); 
    $password = trim($_POST['password']); 
    //start session// 
    if ($username&&$password) { 
     session_start(); 
     require_once("db_connect.php"); 
     //clean the input now we have a db connection// 
     $username = clean_string($db_server, $username); 
     $password = clean_string($db_server, $password); 
     $repeatpassword = clean_string($db_server, $repeatpassword) ; 
     mysqli_select_db($db_server, $db_database) ; 
     //check whether the username exists// 
     $query="SELECT * FROM Users WHERE Username='$username'"; 
     $result=mysqli_query($db_server, $query) ; 
     if ($row = mysqli_fetch_array($result)){ 
      $db_username = $row['Username']; 
      $db_password = $row['Password']; 
      $db_id = $row['userid']; 

      if ($username==$db_username&&salt($password)==$db_password){ 
       $_SESSION['username']=$username; 
       $_SESSION['userid']=$db_id; 
       $_SESSION['logged']="logged"; 
       header ('Location: phpdatabase.php'); 
      }else{ 
       $message = "<h1>Incorrect Password!</h1>"; 
      } 
     }else{ 
      $message = "<h1>That user does not exist!</h1>" . 
          "Please <a href='login.php'>try again</a>"; 
     } 
     mysqli_free_result($result); 
     require_once ("db_close.php"); 
    }else{ 
     $message = "<h1>Please enter a valid username/password</h1>"; 
    } 
?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Fud.</title> 
<link rel="stylesheet" type="text/css" href="site.css" /> 

</head> 
    <h1>Login</h1> 
    <form action='login.php' method='post'> 
    Username:<input type='text' name='username'><br /> 
    Password: <input type='password' name='password'><br /> 
    <input type='submit' name='submit' value='Login' /> 
    <input name='reset' type='reset' value='reset' /> 

    <h4><a href='register.php'>Register</a></h4> 

</form> 
     <?php echo $message; ?>  
+0

您的第二個文件,以啓動會話了。你也應該刪除'$ _SESSION = array();'和'header()'之後,你應該用'exit;'插入一行# – PKeidel

+0

'$ _POST ['userid']'你在說什麼形式?問題中的表格沒有這樣的元素。 –

回答

0

session_start();在您的第二個文件中。

要訪問會話全局,您需要啓動會話。

使用

$_SESSION['userid']= $_POST['userid']; 

$_SESSION['userid']== $_POST['userid']; 
+0

我剛剛試過這仍然發送一個空值到我的數據庫 – misdigest

+0

@misdigest嘗試'echo $ _POST ['userid'];'併發布你得到 –

+0

整個堆什麼都沒有 – misdigest

1

沒有出現在名爲userid形式,所以當你設置:

$_SESSION['userid']= $_POST['userid']; 

$_POST['userid']是空的,也許別的地方你有用戶id已經在$ _SESSION中設置了,如果是這樣的話喲你不需要設置任何新東西,只需要使用它。

+0

會說實話我真的糊塗的形式已經停止上載任何內容到數據庫現在 – misdigest

+0

究竟你是對的時刻,通常'userid'在登錄驗證時存儲在會話中。 –

+0

Misdigest的$ _ POST變量包含所有您所提交的形式命名的項目,用戶ID是不是名字字段的形式,所以它不會是在$ _ POST變量。一旦你從$ _SESSION成功獲得用戶ID,可能如果你有存儲,當他們登錄,不是試圖呼應您的查詢字符串,並直接在MySQL工作臺運行它來查看更詳細的錯誤。 – Dexter

0

您正在將數值從$_POST數組存儲到$_SESSION,但請求表單中沒有$_POST['userid']這樣的元素。

解決方案:最好通過先登錄他/她來驗證用戶身份。一旦用戶登錄,您可以在會話中保存用戶標識,在整個會話的每個頁面都可以訪問它。

假設您的登錄表單的文本字段名稱爲userid。在啓動會話並驗證用戶之後,將其放入您的登錄檢查文件中。

$_SESSION['userid'] = $_POST['userid']; 

現在在你的頁面,您都將數據插入到數據庫中刪除行說

$_SESSION['userid'] = $_POST['userid']; 
+0

用戶ID自動註冊時我只是想從我的用戶數據,這些值上傳到我的食譜數據庫 – misdigest

+0

我有編輯與我的登錄表單原題遞增,所以你說我有打電話定義會話在那裏? – misdigest

+0

你可以使用'mysqli_insert_id($ mysqli的)獲得最後的自動增量ID;'在註冊時間後插入然後將其存儲在'$ _SESSION [「用戶ID」];' –