1

ログインしたユーザーのユーザー名を取得して、フォームと一緒にデータベースに挿入して、挿入されているデータをログインしているユーザーに関連付けることができるようにしたい..何か考えはありますか?

    <?php 
require_once("models/config.php");
securePage($_SERVER['PHP_SELF']);
?>

<form action="" method="post" enctype="multipart/form-data">
<label  for="file"><font  size="5"><b>Choose Photo:</b></font></label>
<input type="file" name="file" onchange="file_selected = true;" required><br>
Last Name:<input  type="text" name="fname" required><br> 
Last Name:<input  type="text" name="lname" required><br> 
Age:<input type="text" name="age" required><br>
<input id="shiny" type="submit" value="Submit" name="submit">
</form>

ここに私の挿入クエリがあります..ご覧のとおり、値を指定していません。これは$username私の問題です。そこに何を入れるべきですか?

$photo= "pictures/" . $_FILES["file"]["name"];
$fname = $_POST["fname"];
$lname = $_POST["lname"];
$age   =$_POST["age"];
$username = ?
$stmt = $mysqli->prepare("INSERT INTO photos (Firstname, Lastname, Age, author) VALUES (?, ?, ?, ?, ?)");

// TODO check that $stmt creation succeeded

// "s" means the database expects a string
$stmt->bind_param("ssss", $photo, $fname, $lname, $age, $username);

$stmt->execute();


$stmt->close();

$mysqli->close();

そして、これがconfig.phpの中にあるものです...

<?php
require_once("db-settings.php"); //Require DB connection

//Retrieve settings
$stmt = $mysqli->prepare("SELECT id, name, value
FROM ".$db_table_prefix."configuration");   
$stmt->execute();
$stmt->bind_result($id, $name, $value);

while ($stmt->fetch()){
$settings[$name] = array('id' => $id, 'name' => $name, 'value' => $value);
}
$stmt->close();

//Set Settings
$emailActivation = $settings['activation']['value'];;
$mail_templates_dir = "models/mail-templates/";
$websiteName = $settings['website_name']['value'];
$websiteUrl = $settings['website_url']['value'];
$emailAddress = $settings['email']['value'];
$resend_activation_threshold = $settings['resend_activation_threshold']['value'];
$emailDate = date('dmy');
$language = $settings['language']['value'];
$template = $settings['template']['value'];

$default_hooks = array("#WEBSITENAME#","#WEBSITEURL#","#DATE#");
$default_replace = array($websiteName,$websiteUrl,$emailDate);

if (!file_exists($language)) {
$language = "models/languages/en.php";
}

if(!isset($language)) $langauge = "models/languages/en.php";

//Pages to require
require_once($language);
require_once("class.mail.php");
require_once("class.user.php");
require_once("class.newuser.php");
require_once("funcs.php");

session_start();

//Global User Object Var
//loggedInUser can be used globally if constructed
if(isset($_SESSION["userCakeUser"]) && is_object($_SESSION["userCakeUser"]))
{
$loggedInUser = $_SESSION["userCakeUser"];
}

?>
4

3 に答える 3

2

ユーザーがログインしたら、それをセッション変数として保存してからアクセスしてみませんか?

例えば:

//Login page
//After user is authenticated

session_start();
$_SESSION['username'] = $username 

//$username is whatever you grabbed as the supplied login details
于 2013-01-26T19:18:00.790 に答える
0

私はあなたのコードからあなたが使うと思います

$loggedInUser = $_SESSION["userCakeUser"];
于 2013-01-26T19:19:54.720 に答える
0

私が理解しているように、テーブル「写真」に追加の列を追加する必要があります。列名は、ユーザー名ではなくユーザーIDになります。これは、名前ではなくユーザーのキーIDに依存する方がよいためです。

次に、他の挿入と同様に、新しい列をクエリに追加します。

今のところ、現在のオプションを試して、ユーザー名フィールドをテーブルに追加してください。値は次のとおりです。 $_SESSION["userCakeUser"];

于 2013-01-26T19:21:35.263 に答える