作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想上传一些新闻,为此我需要插入一张图片。图片和文字都有效。但我不能一步完成:
<?php
session_start();
require_once("inc/config.inc.php");
require_once("inc/functions.inc.php");
//Überprüfe, dass der User eingeloggt ist
//Der Aufruf von check_user() muss in alle internen Seiten eingebaut sein
$user = check_user();
include("templates/header.inc.php")
?>
<div class="container main-container registration-form">
<h1>Einfügen</h1>
<?php
$showFormular = true; //Variable ob das Registrierungsformular anezeigt werden soll
if(isset($_GET['register'])) {
$error = false;
$vorname = htmlentities(trim($_POST['vorname']));
$nachname = htmlentities(trim($_POST['nachname']));
$nickname = htmlentities(trim($_POST['nickname']));
if(empty($vorname) || empty($nachname) || empty($nickname)) {
echo 'Bitte alle Felder ausfüllen<br>';
$error = true;
}
//Keine Fehler, wir können den Beitrag hinzufügen
if(!$error) {
$statement = $pdo->prepare("INSERT INTO entries (entry_title, entry_subtitle, entry_content) VALUES (:vorname, :nachname, :nickname)");
$result = $statement->execute(array('vorname' => $vorname, 'nachname' => $nachname, 'nickname'=> $nickname));
if($result) {
echo 'Dein Beitrag wurde erfolgreich hinzugefügt. <a href="news.php">Zu den News</a>';
$showFormular = false;
} else {
echo 'Beim Abspeichern ist leider ein Fehler aufgetreten<br>';
}
}
}
if($showFormular) {
?>
<form action="?register=1" action="upload.php" method="post"enctype="multipart/form-data">
<div class="form-group">
<label for="inputVorname">Titel :</label>
<input type="text" id="inputVorname" size="40" maxlength="250" name="vorname" class="form-control" required autofocus><br />
<label for="inputNachname">Subtitel:</label>
<input type="text" id="inputNachname" size="40" maxlength="250" name="nachname" class="form-control" required><br />
<label for="inputNickname">Content:</label>
<textarea id="inputNickname" rows="7" cols="200" type="text" name="nickname" class="form-control" required></textarea><br /><br />
</form>
<br />
<input type="file" name="datei"><br>
<button type="submit" class="btn btn-lg btn-primary btn-block" style="width:100px;">Uploaden</button><br />
</form>
<br />
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="datei"><br>
<input type="submit" value="Hochladen">
</form>
</div>
<?php
} //Ende von if($showFormular)
?>
<?php
include("templates/footer.inc.php")
?>
这里是图片的上传:
<?php
$upload_folder = 'upload/'; //Das Upload-Verzeichnis
$filename = pathinfo($_FILES['datei']['name'], PATHINFO_FILENAME);
$extension = strtolower(pathinfo($_FILES['datei']['name'], PATHINFO_EXTENSION));
//Überprüfung der Dateiendung
$allowed_extensions = array('png', 'jpg', 'jpeg', 'gif');
if(!in_array($extension, $allowed_extensions)) {
die("Ungültige Dateiendung. Nur png, jpg, jpeg und gif-Dateien sind erlaubt");
}
//Überprüfung der Dateigröße
$max_size = 500*1024; //500 KB
if($_FILES['datei']['size'] > $max_size) {
die("Bitte keine Dateien größer 500kb hochladen");
}
//Überprüfung dass das Bild keine Fehler enthält
if(function_exists('exif_imagetype')) { //Die exif_imagetype-Funktion erfordert die exif-Erweiterung auf dem Server
$allowed_types = array(IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_GIF);
$detected_type = exif_imagetype($_FILES['datei']['tmp_name']);
if(!in_array($detected_type, $allowed_types)) {
die("Nur der Upload von Bilddateien ist gestattet");
}
}
//Pfad zum Upload
$new_path = $upload_folder.$filename.'.'.$extension;
echo $new_path;
//Neuer Dateiname falls die Datei bereits existiert
if(file_exists($new_path)) { //Falls Datei existiert, hänge eine Zahl an den Dateinamen
$id = 1;
do {
$new_path = $upload_folder.$filename.'_'.$id.'.'.$extension;
$id++;
} while(file_exists($new_path));
}
echo $new_path;
$statement = $pdo->prepare("INSERT INTO entries (entry_picture) VALUES (:datei)");
$result = $statement->execute(array('datei' => $new_path));
if($result) {
echo 'Dein Beitrag wurde erfolgreich hinzugefügt. <a href="news.php">Zu den News</a>';
$showFormular = false;
} else {
echo 'Beim Abspeichern ist leider ein Fehler aufgetreten<br>';
}
//Alles okay, verschiebe Datei an neuen Pfad
move_uploaded_file($_FILES['datei']['tmp_name'], $new_path);
echo 'Bild erfolgreich hochgeladen: <a href="'.$new_path.'">'.$new_path.'</a>';
?>
我正在使用 phpmyadmin。这是 a picture of the mysql table
两者都有效,但不是一步到位。如何做到这一点?
这是functions.php
<?php
/**
* A complete login script with registration and members area.
*
* @author: Nils Reimers / http://www.php-einfach.de/experte/php-codebeispiele/loginscript/
* @license: GNU GPLv3
*/
include_once("password.inc.php");
/**
* Checks that the user is logged in.
* @return Returns the row of the logged in user
*/
function check_user() {
global $pdo;
if(!isset($_SESSION['userid']) && isset($_COOKIE['identifier']) && isset($_COOKIE['securitytoken'])) {
$identifier = $_COOKIE['identifier'];
$securitytoken = $_COOKIE['securitytoken'];
$statement = $pdo->prepare("SELECT * FROM securitytokens WHERE identifier = ?");
$result = $statement->execute(array($identifier));
$securitytoken_row = $statement->fetch();
if(sha1($securitytoken) !== $securitytoken_row['securitytoken']) {
//Vermutlich wurde der Security Token gestohlen
//Hier ggf. eine Warnung o.ä. anzeigen
} else { //Token war korrekt
//Setze neuen Token
$neuer_securitytoken = random_string();
$insert = $pdo->prepare("UPDATE securitytokens SET securitytoken = :securitytoken WHERE identifier = :identifier");
$insert->execute(array('securitytoken' => sha1($neuer_securitytoken), 'identifier' => $identifier));
setcookie("identifier",$identifier,time()+(3600*24*365)); //1 Jahr Gültigkeit
setcookie("securitytoken",$neuer_securitytoken,time()+(3600*24*365)); //1 Jahr Gültigkeit
//Logge den Benutzer ein
$_SESSION['userid'] = $securitytoken_row['user_id'];
}
}
if(!isset($_SESSION['userid'])) {
die('Bitte zuerst <a href="login.php">einloggen</a>');
}
$statement = $pdo->prepare("SELECT * FROM users WHERE id = :id");
$result = $statement->execute(array('id' => $_SESSION['userid']));
$user = $statement->fetch();
return $user;
}
/*
Returns true when the user is checked in, else false
*/
function is_checked_in() {
return isset($_SESSION['userid']);
}
/**
* Returns a random string
*/
function random_string() {
if(function_exists('openssl_random_pseudo_bytes')) {
$bytes = openssl_random_pseudo_bytes(16);
$str = bin2hex($bytes);
} else if(function_exists('mcrypt_create_iv')) {
$bytes = mcrypt_create_iv(16, MCRYPT_DEV_URANDOM);
$str = bin2hex($bytes);
} else {
//Replace your_secret_string with a string of your choice (>12 characters)
$str = md5(uniqid('your_secret_string', true));
}
return $str;
}
/**
* Returns the URL to the site without the script name
*/
function getSiteURL() {
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
return $protocol.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/';
}
/**
* Outputs an error message and stops the further exectution of the script.
*/
function error($error_msg) {
include("templates/header.inc.php");
include("templates/error.inc.php");
include("templates/footer.inc.php");
exit();
}
最佳答案
move_uploaded_file(temporary_location, location_to_location);
move_uploaded_file($_FILES['datei']['tmp_name'], $new_path);
关于php - 如何一步上传图片和文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55029155/
我是一名优秀的程序员,十分优秀!