ログインしたユーザーが記入して提出できるさまざまなフォームを持つアプリケーションを作成しています。例えば、アーティストはフォームを通じてビデオを提出することができ、そのムービーは保存され、データベースにアップロードされます。 しかし、フォームを送信してフォームを送信するときにフォームにuserIDとuserEmailを自動的に接続すると、データを取り戻す際にユーザーIDまたは電子メールを簡単にチェックできます。 私はこれを行ういくつかの異なる方法を試したが、何も働いていないので、どんな助けでも大歓迎です。私はデータベーステーブルにも外部キーを使用していますが、テーブルへの接続でどのように動作するのか分かりません。 は、だからここにフォームのページはこちら あるセッションデータを持つphp pdoを挿入する企業
CREATE TABLE `movies` (
`userID` int(11) NOT NULL,
`userEmail` varchar(250) NOT. NULL,
`movie_name` varchar(300) NOT NULL,
FOREIGN KEY (userID) Refrences users(userID),
FOREIGN KEY (userEmail) REFRENCES users(userEmail),
UNIQUE KEY `movie_name` (`movie_name`)
) ENGINE=MyISAM DEFAULT. CHARSET=latin1;
CREATE TABLE IF NOT EXISTS. `users` (
`userID` int(11) NOT NULL. AUTO_INCREMENT,
`userEmail` varchar(100) NOT NULL,
`userPass` varchar(100) NOT NULL,
`userType` varchar(6) NOT NULL,
`agreement` enum('Yes', 'No') NOT NULL,
`userStatus` enum('Y','N') NOT NULL. DEFAULT 'N',
`tokenCode` varchar(100) NOT NULL,
PRIMARY KEY (`userID`),
UNIQUE KEY `userEmail` (`userEmail`)
) ENGINE= MyISAM DEFAULT. CHARSET=latin1. AUTO_INCREMENT=1 ;
作品表ユーザーのための、映画 Usersテーブルのための私のテーブルの設定です(私はここでPOSTにセッションデータを追加しようとしたとみましたセッションデータを追加するGETメソッドはどちらも有効ではありません)
if(isset($_POST['submit']))
{
$email = trim($_POST['email']);
$movie = trim($_POST['movie']);
if($user_home->upload($email, $movie))
{
header("Location: Artist_Uploads.php?inserted");
}
else
{
header("Location: Artist_Uploads.php?failure");
}
}
<form action="Artist_Uploads.php" method="post" name="upload">
<input name="email" type="hidden" value="<?php echo. htmlentities($row['userEmail']); ?>" />
<input name="movie" type="text" />
<input name="submit" type="submit" />
</form>
フォーム提出を処理するページ
public function upload($email,$movie) { try
{
$stmt = $this->conn->prepare("INSERT INTO movies(userEmail, movie_name) VALUES(:email, :movie)");
$stmt->bindValue(":email",$email);
$stmt->bindparam(":movie",$movie);
$stmt->execute();
return true;
}
catch(PDOException $e)
{
echo $e->getMessage();
return false;
}
}
私は、trueを返してからtrueの前にinsert lasted()を試しました。
VALUE( ''、 '$ _セッション[ユーザーID]'、 '$ _セッション[ユーザーメール]'、 ''):ムービー])を追加しようとしました: また、_SESSIONデータをbindValueまたはbindColに追加しようとしました また、INSERT INTOムービーをusers.userID、users.userEmailから追加しようとしましたが、どちらもうまくいきませんでした。
私はuserIDとuserEmailを挿入せずに出力する方法を知りませんフォームはそれをそのまま挿入しますが、誰かがその情報を簡単に操作できたり、ユーザーIDを取得して遊んでいたりするので、危険な状態になって注射に気付いてしまいますので、提案や指摘は大変ありがとうございます。
SQLとPHPのコードブロックを適宜使用して質問を編集してください。 – alttag
編集していただきありがとうございます。私があなたのコードと説明を理解している限り、それは読みにくいです。あなたは '$ _SESSION'からデータを取得しようとしています。フォームが送信された後、データは '$ _POST'にあり、' $ _SESSION'にはありません。それ以外の場合は、PHPでエラー報告を有効にして、問題の一部としてエラーを共有してください。 – alttag
フォームのデータを提出した後に提出したいと思います。ユーザーがログインしていて、映画を送信したいとします。彼らが映画を提出すると、フォームが提出されたときにユーザーIDとユーザーの電子メールが自動的にデータベースに保存されます。セッションデータにはユーザーIDと電子メールがあります。ユーザーがフォームを送信したときにその情報を添付する方法がわかりません。それ以来より多くのことができますか? – shutterfly