Jeg har lige gået igennem tjeck listen :-)
Der sker ikke noget hverken når jeg tjekker om $row er set, eller ved at bruge indexes ved output.
Alt der kører efter:
9. if(file_exists($file) && is_file($file)){....
bliver ikke kørt virker det til. Så vidt jeg kan se, kan det så være noget med hvordan filerne bliver uploadet ELLER hvordan/HVOR de bliver gemt?
Altså hvordan jeg definere der hvor de skal gemmes midlertidigt? Hvis jeg har forstået processen korrekt.
Jeg kan prøve at lægge alt ud, dvs.
1)Filen hvor pdf'erne bliver uploadet.
2)Filen hvor pdf'erne bliver lavet til links, der går til siden hvor jeg gerne vil vise hele filen når den er valgt.
3)Filen som skal vise pdf'en (Som ikke kan finde den, eller hvad der sker)
1)- <?php require_once("includes/config.php"); ?>
- <?php require(MYSQL); ?>
- <?php $pdf_errors = array(); ?>
- <?php error_reporting(NULL); ?>
- <?php
- if(isset($_POST['submit'])){
-
- if(empty($_POST['title'])){
- $pdf_errors[1] = '<small style="color:red;">Husk at indtaste en titel!</small>';
- }else{
- $t = mysqli_real_escape_string($connection, strip_tags($_POST['title']));
- }
- if(empty($_POST['description'])){
- $pdf_errors[2] = '<small style="color:red;">Husk at indtaste noget i description!</small>';
- }else {
- $d = mysqli_real_escape_string($connection, strip_tags($_POST['description']));
- }
-
- if(is_uploaded_file($_FILES['pdf']['tmp_name']) && ($_FILES['pdf']['error']) == UPLOAD_ERR_OK){
- $file = $_FILES['pdf'];
- }
- $size = round($file['size']);
- if($size > 1048576 ){// 1MB in BYTES
- $pdf_errors[3] = '<small style="color:red;">Filen var for stor - max størrelse er 1000K!</small>';
- // THIS ERROR MESSAGES IS NOT BEING REGISTERED!
- }
- if(($file['type']!= 'application/pdf') && (substr($file['name'],-4)!='.pdf'))
- {
- $pdf_errors[4] = '<small style="color:red;">Det skal være et PDF dokument, prøv igen!</small>';
- }
- }
-
- if(isset($_POST['submit']) && empty($pdf_errors)){
- $destination = 'PDFS_DIR' .$tmp_name.'';
- $tmp_name = sha1($file['name'].uniqid('', true));
-
- move_uploaded_file($tmp_name, $destination);
-
- // MOVING THE FILE:
- if(move_uploaded_file($file['tmp_name'], $destination)){
- $_SESSION['pdf']['tmp_name'] = $tmp_name;
- $_SESSION['pdf']['size'] = $size;
- $_SESSION['pdf']['file_name'] = $file['name'];
- $upload_succes = '<h4>The file has been uploaded!</h4>';
- }else {
- trigger_error('<p>The file could not be moved!</p>');
- unlink($file['tmp_name']);
- }
-
- // Add pdf into database:
- $fn = mysqli_real_escape_string($connection, $_SESSION['pdf']['file_name']);
- $tmp_name = mysqli_real_escape_string($connection, $_SESSION['pdf']['tmp_name']);
- $size = mysqli_real_escape_string($connection, $_SESSION['pdf']['size']);
- $query = "INSERT INTO pdfs(tmp_name,title,description,file_name,size)
- VALUES
- ('$tmp_name','$t','$d','$fn','$size')";
- $result = mysqli_query($connection, $query);
-
- $succes = '<p>The file has been succesfully uploaded to the db!</p>';
- }
- ?>
2)- <?php
- // GET the PDFS:
- $query = "SELECT tmp_name, title, description, size FROM pdfs ORDER BY date_created DESC";
- $result = mysqli_query($connection, $query);
- if(mysqli_num_rows($result)>0){
- while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){
- echo "<div><h4><a href=\"view_pdf.php?id={$row['tmp_name']}\">
- {$row['title']}</a> ({$row['size']}kb)</h4><p>{$row['description']}</p>
- </div>\n<br />";
- }
- }
- ?>
3)- <?php require_once("includes/config.php"); ?>
- <?php require(MYSQL); ?>
- <?php $valid = false; ?>
- <?php
- if(isset($_GET['id'])&&(strlen($_GET['id'])==40)&&(substr($_GET['id'],0,1)!='.')){
- $file = PDFS_DIR .$_GET['id'];
- //echo $file;
- if(file_exists($file) && (is_file($file))){
- $query = 'SELECT title, description, file_name, FROM pdfs WHERE tmp_name='.mysqli_real_escape_string($connection, $_GET['id']).'';
- $result = mysqli_query($connection, $query);
- if(mysqli_num_rows($result) == 1){//OK!
- $row = mysqli_fetch_array($result, MYSQLI_ASSOC);
- echo $row[3];
- $valid = true;
- $fs = filesize($file);
-
- header("Content-Length:$fs\n");
- header('Content-type:application/pdf');
- header('Content-Disposition:inline;filename="'.$row['file_name'].'"');
-
- readfile($file);
- die();
- }
- }
- }
- ?>
I config.php, som inkluderers i toppen af hvert script, definerer jeg PDFS_DIR - Som jeg bruger i scriptet. Jeg er ikke sikker på jeg har gjort det rigtigt?
Her er den constant:
- define('PDFS_DIR', $_SERVER['DOCUMENT_ROOT'] .'includes/pdfs');
Når jeg har uloadet nogen test pdf'er, så er det ikke i den folder der er kommet en fil, men ude i root niveau. Selvom jeg har forsøgt..at sende pdf'erne (tmp_name, er det ikke korrekt?) ind til includes/pdfs
Spørg endelig hvis denne forklaring ikke gav mening.
Men det er det jeg har nu, og der kan godt uploades, det er det sidste script, hvor jeg vil vise filerne der ikke virker. Men måske er der er sammenhæng hen over de 3 filer der ikke er ok?
Indlæg senest redigeret d. 16.08.2011 20:28 af Bruger #16555