Я работаю над приложением, которое имеет различные формы, которые пользователь может заполнить и отправить. Например, художник может отправить свое видео через форму, и этот фильм будет сохранен и загружен в базу данных. Однако мне бы хотелось, чтобы при отправке формы для автоматического подключения идентификатора пользователя и userEmail к форме при ее отправке, чтобы я мог легко проверить идентификатор пользователя или адрес электронной почты при возврате данных. Я пробовал несколько разных способов сделать это, и ничего не сработало, поэтому любая помощь очень ценится. Я также использую внешние ключи в своих таблицах базы данных, но я не понимаю, как это работает при подключении к таблице. Так вот мои настройки таблицы для пользователей и фильмы таблицы пользователей ТаблицыPhp pdo inserting firm with session data
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 ;
Фильмы
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;
страница Формы здесь (я попытался добавить данные сессии в POST здесь и попытался метод GET для добавления данных SESSION, ни один из которых не работал)
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;
}
}
Я попытался вставить lasted() под возвратом true и перед возвратом true.
Пробовал добавлять VALUES ('', '$ _ SESSION [cuserID]', '$ _ SESSION [userEmail]', ''): movies ") ;. Я также попытался добавить данные _SESSION в bindValue или bindCol ни из те, кто работал либо. Я также попытался добавить INSERT INTO фильмы FROM users.userID, users.userEmail, но это тоже не сработало.
Так что я не знаю, как заставить его вставлять userID и userEmail без вывода его в форма затем вставляет его таким образом, но это кажется опасным и открытым для инъекций, потому что кто-то может легко манипулировать этой информацией, или получить идентификатор пользователя и начать играть с ним. Поэтому любые предложения или указатели будут очень благодарны.
Пожалуйста, отредактируйте свой вопрос, используя блоки кода для SQL и PHP, если это необходимо. – alttag
Спасибо за редактирование. Насколько я понимаю ваш код и объяснение - и это трудно читать - вы пытаетесь получить данные из '$ _SESSION'. После отправки формы данные находятся в '$ _POST', а не в' $ _SESSION'. В противном случае убедитесь, что вы включили отчет об ошибках в PHP, и сообщаете какие-либо ошибки как часть вопроса. – alttag
Я хотел бы представить данные сеанса в форме не после ее отправки. Скажите, что пользователь вошел в систему, и они хотели бы отправить фильм. Когда они отправляют свой фильм, их идентификатор пользователя и электронная почта пользователя автоматически сохраняются в базе данных при отправке формы. Данные сеанса имеют идентификатор пользователя и адрес электронной почты. Я просто не уверен, как получить эту информацию для присоединения, когда пользователь отправляет форму. Значит ли это больше? – shutterfly