如何一步一步上传图片和文字?

时间:2019-03-06 17:39:29

标签: php html mysql

我想上传一些新闻,为此,我需要插入一张图片。图片和文字都可以。但是我不能一步一步做到:

<?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();
}

1 个答案:

答案 0 :(得分:0)

move_uploaded_file(temporary_location,location_to_location);

move_uploaded_file($ _ FILES ['datei'] ['tmp_name'],$ new_path);