Avatar billede niehans Nybegynder
26. oktober 2005 - 18:16 Der er 18 kommentarer og
1 løsning

Upload funktion er lidt indviklet

Hmm. ja jeg er sgu nybegynder så jeg er startet med at "låne" koder rudnt omkring og rette dem til. En ven har programmeret en login funktion i sin tid som jeg har måtte få og så tænkte jeg at jeg ville lave en upload funktion beskyttet af den. Fandt den artikel på webcafen og klippede den ud og kørte den sammen med det jeg havde

<?php
if($_SESSION['userLoggedIn']){
?>

<?PHP

/**
* Simpelt script der tager imod et filupload og lister
* filer i upload-biblioteket.
*
* Scriptet er et eksempel til en artikel paa WebCafe.dk:
*
*    http://www.webcafe.dk/artikler/php/upload/
*/


/**
* Hvor skal filerne uploades til?
* Husk, at webserveren skal kunne skrive til dette bibliotek
*/
$konfiguration["upload_bibliotek"] = "./upload";

/* Hvor mange kilobytes maa filerne fylde per styk? */
$konfiguration["max_stoerrelse"] = "10000";


/**
* Checker PHP-version
*/
list($major, $minor, $rev) = explode(".", phpversion());
if($major < 4) {
  die("Jeg kan kun arbejde med PHP 4.0.0 eller derover");
}


/**
* Udligner forskellene mellem 4.1.x og 4.0.x
* Bemaerk, at disse ikke er "superglobals"
*/
if($minor < 1) {
  $_FILES = $HTTP_POST_FILES;
  $_POST = $HTTP_POST_VARS;
  $_SERVER = $HTTP_SERVER_VARS;
}


if($_FILES["upfil"]["size"] > 0) {

  /**
  * Hvis der er en fil, saa uploader vi den.
  *
  * Foerst slaar vi lige fast, hvor filen skal flyttes fra og til.
  */

  $fra = $_FILES["upfil"]["tmp_name"];
  $til = $konfiguration["upload_bibliotek"] . "/" . $_FILES["upfil"]["name"];

  /**
  *  Checker lige om filen er for stor til at vi vil acceptere den.
  *  Vi bruger ceil() i stedet for round(), saa vi ikke faar den skoere
  *  situation, at fejlmeldingen siger, at filen er for stor, men angiver
  *  samme stoerrelse for filen og den oevre graense.
  */
  $fil_stoerrelse = filesize($fra)/1024;
  if($fil_stoerrelse > $konfiguration["max_stoerrelse"]) {
      die("Desv&aelig;rre - filen er for stor. Jeg accepterer kun " .
          $konfiguration["max_stoerrelse"] . "kb, og din fil fylder " .
          ceil($fil_stoerrelse) . "kb");
  }
  if(function_exists("move_uploaded_file")) {
    move_uploaded_file($fra, $til);
  } else {
    copy($fra, $til);
  }

  header("Location: " . $_SERVER["PHP_SELF"]);
  exit;

} else {

  /**
  * Intet tegn paa upload, saa vi viser bare listen over filer
  * og HTML-formularen til nye uploads.
  */
  $indhold = listFiler($konfiguration["upload_bibliotek"]);
  $indhold .= bygFormular($_SERVER["PHP_SELF"]);
  $output = bygSide("Upload af Mentol", $indhold);

}


/**
* Skriver ud til browseren
*/
echo $output;
exit;



/**************************************************\
**              Hjaelpefunktioner              **
\**************************************************/

function bygSide($titel, $indhold) {

  /**
  * Pakker indholdet ind i lidt formalia
  */
  return '<html>
            <head><title>' . $titel . '</title></head>
            <body bgcolor="#ffffff">
              <div align="right"><a href="./">Tilbage til artiklen</a></div>
              ' . $indhold . '</body>
          </html>
        ';

}

function bygFormular($action) {

  $formular = '<form action="' . $action . '" method="post" enctype="multipart/form-data">
                <table border="1" cellpadding="5" cellspacing="0">
                  <tr>
                    <td align="right" bgcolor="#999999"><b>Fil til upload:</b></td>
                    <td bgcolor="#cccccc"><input type="file" name="upfil" /></td>
                  </tr>
                  <tr>
                    <td colspan="2" align="middle" bgcolor="#dddddd"><input type="submit" value="upload" /></td>
                  </tr>
                </table>
              </form>
              ';

  return "<h2>Upload fil:</h2>" . $formular;

}

function listFiler($bibliotek) {

  if($bib = @opendir($bibliotek)) {
    /**
    * Denne syntaks er forklaret i PHP-manualen:
    * http://www.php.net/manual/en/function.readdir.php
    */
    while (false !== ($fil = readdir($bib))) {
      if($fil != "." && $fil != ".." && !ereg("^\..+", $fil)) {
          $fil_liste[] = "<a href=\"$bibliotek/$fil\">$fil</a>";
      }
    }
    closedir($bib);
    sort($fil_liste);
    if(is_array($fil_liste)) {
      $liste = "<li>" . join("</li><li>", $fil_liste) . "</li>";
    } else {
      $liste = "<li>Ingen filer p&aring; lager</li>";
    }
    return "<h2>Filer p&aring; lager:</h2><ul>" . $liste . "</ul>";
  } else {
    die("Kunne ikke &aring;bne biblioteket: " . $bibliotek);
  }

}

?>

<?php
}
?>

Hvorfor kan den ikke det? I må forklare mig det..
Avatar billede jakobdo Ekspert
26. oktober 2005 - 18:23 #1
Hvorfor kan den ikke hvad?
Avatar billede niehans Nybegynder
26. oktober 2005 - 18:24 #2
Ja den skriver ingen ting... Den går kold...
Avatar billede jakobdo Ekspert
26. oktober 2005 - 18:33 #3
I stedet for at smide alt koden mellem if($_SESSION["userLoggedIn"]){ .... }
Så kunne du prøve nøjes med at lave tjekket i toppen:
<?php
session_start();
if($_SESSION["userLoggedIn"] != true)
{
echo "Du har ikke adgang til denne side...";
exit();
}

og så kommer din kode her...

Men jeg tror måske din fejl i bund og grund er du mangler
<?php
session_start();

i toppen af dit script.
Avatar billede niehans Nybegynder
26. oktober 2005 - 23:35 #4
Problemet er at denne

<?php
if($_SESSION['userLoggedIn']){
?>

virker alle andre steder. Jeg bruger den på et par sider som også skal beskyttes...
H
Avatar billede niehans Nybegynder
26. oktober 2005 - 23:36 #5
ups fik trykket lidt for hurtigt. Jeg kan godt poste mit login script men der bruger jeg session start funktionen.. Tror måske det er nogle koder der ikke kan sammen... hmmm...
Avatar billede niehans Nybegynder
26. oktober 2005 - 23:49 #6
Hold da op Jakob... Det virker sgu... Smid et svar og hvis du gider forklare mig hvorfor det virker med

<?php
session_start();
if($_SESSION["userLoggedIn"] != true)
{
echo "Du har ikke adgang til denne side...";
exit();
}

og ikke med den anden...
Avatar billede niehans Nybegynder
27. oktober 2005 - 00:01 #7
Men den vil ikke vise siden når den har uploaded...??? skod...
Avatar billede jakobdo Ekspert
27. oktober 2005 - 08:35 #8
Fordi inden du kan aflæse $_session skal du starte sessions med: session_start();
Du mangler vel muligvis noget kode som vises efter upload?
Avatar billede niehans Nybegynder
27. oktober 2005 - 11:00 #9
Okay.. Jeg tror jeg har fundet ud af hvorfor den ikke viser siden...

denne funktion $_SERVER["PHP_SELF"]); virker heller ikke i et af min andre dokumenter... en post sender... Kan man ikke bruge den funktion
Avatar billede jakobdo Ekspert
27. oktober 2005 - 11:05 #10
Den skulle ellers være god nok...
$_SERVER["PHP_SELF"]
Den peger som sådan på sig selv.
Avatar billede niehans Nybegynder
27. oktober 2005 - 11:15 #11
Ja jeg forstår ikke en skid...´Prøvede med dette billede galleri'
www.mentol.dk/sjov.php

<?
##############################################################################
# Easy Gallery                  Version 1.2                                  #
# Copyright 2001 DotDragNet    burt@dotdragnet.co.uk                        #
# PHP, Flash, ASP and Perl from http://www.dotdragnet.co.uk/                #
##############################################################################
# This script is copyright 2001, burt@dotdragnet.co.uk www.dotdragnet.co.uk  #
#                                                                            #
# COPYRIGHT NOTICE                                                          #
# Copyright 2001 DotDragNet.co.uk  All Rights Reserved.                      #
#                                                                            #
# This script may be used and modified free of charge by anyone so long as  #
# this copyright notice and the comments above remain intact.  By using this #
# script and its associated files, you agree to indemnify DotDragNet and all #
# other interested parties from any liability that might arise from it's use.#
#                                                                            #
# Selling the code for this program without prior written consent is        #
# expressly forbidden.  Obtain permission before redistributing this        #
# script over the Internet or in any other medium. In all cases copyright    #
# and header must remain intact.                                            #
#                                                                            #
# Please don't remove the link to www.dotdragnet.co.uk from the pages        #
# that this script creates.  All ya gotta do is let us know where it is in  #
# use, and you may then remove the link!                                    #
#                                                                            #
# DotDragNet also requests that should you make any improvements to this    #
# script, please be kind enough to let us know so that we may improve ours  #
# for the rest of the people who use it.                                    #
##############################################################################

// PLEASE READ THE ACCOMPANYING README.TXT

// DEFINE VARIABLES:

// NUMBER OF <TD> PER <TR> ( IN ENGLISH: COLUMNS IN THE PAGE :-) )
$td='4';
// BACKGROUND COLOR OF THE PAGE
$bg='white';
// SHOW THE NAME OF THE FILE?
$name='1'; // 1 = yes, 0 = no
// TITLE OF YOUR PAGE
$pagetitle='A selection of my images. Click each one to see a larger image.';

### --- CHANGE NOTHING BELOW THIS LINE UNLESS YOU ARE OK WITH PHP --- ###

// DIRECTORY NAME
$handle=opendir('.');

// GO
$piccy=array();
$count=0;
// SCAN THE DIR
while (($filename = readdir($handle))!==false) {
  // ADD IN EXTRA FILE TYPES HERE
  if (substr($filename,-4) == ".jpg" || substr($filename,-4) == ".gif" || substr($filename,-4) == ".png" || substr($filename,-4) == ".JPG" || substr($filename,-4) == ".GIF" || substr($filename,-4) == ".PNG"  || substr($filename,-4) == ".BMP" || substr($filename,-4) == ".bmp"){
  if (substr($filename,0,6) == "thumb_"){
    $piccy[$count] = $filename;
    $count++;
  }}}
// CLOSE DIR
closedir($handle); 
// SORT THE FILES
sort($piccy);
reset($piccy);

// DISPLAY LARGE IMAGE
if ($large){
        echo "<html><head><title>Easy Gallery :: " .$large. "</title></head><body bgcolor=" . $bg . ">";
  echo '<div align="center">';
// IS NAME SELECTED TO SHOW?
  if ($name=="1") {
      if (!(file_exists($large))){
          echo "No file of that name is uploaded.";
          exit;
      }
      echo '<br><font face="verdana" size="1">Selected image: ' . $large . '</font>';}
// SHOW THE PICTURE
  echo '<table width="100%" border=0 cellpadding=0 cellspacing=0>';
  echo '<tr>';
  echo '<td valign="middle" align="center"><a href=java script:history.back(-1)><img src="'.$large.'" alt="'.$large.'" border=0></a></td>';
  echo '<br>';
  echo '</tr></table>';
  echo '<br><br>';
  echo '<a href=java script:history.back(-1)>';
  echo '<font face="verdana" size="1">Back to the Thumbnail Gallery</font></a>';
        }
// NO LARGE PICCY, CREATE TABLE FOR THUMBNAILS:
else{
// start table, if you want cellpadding, cellspacing, colors, set them here
echo '<html><head><title> ::// Easy Gallery //::</title>';
echo '<head>';
echo "<body bgcolor=" . $bg . ">";
echo '<div align="center"><font face="verdana" size="1">' . $pagetitle . '</font><br>';
echo '<br><table width="100%" border=0 cellpadding=0 cellspacing=0>';
echo '<tr>';
// BECAUSE THE <TD> IS SET BY USER, WORK OUT THE PERCENTAGES:
$divider=ceil(100/$td);
if (($divider*$td)>100) $divider--;
// GRAB THE IMAGES
for ($l=0;$l<=sizeof($piccy)-1;$l++){
  $isend = strpos((($l)/$td),".");
  if (!$isend && ($l!=0)){echo "</tr>\n<tr><td colspan=$td><br></td></tr>\n<tr>\n";}
  if ($l==0){echo "\n";}
  // START THE <TD>
  echo '<td width="'.$divider.'%" valign="middle" align="center">';
  // GET THE LARGER PICTURE (IF SELECTED)
  echo "<a href=\"$PHP_SELF?large=".substr($piccy[$l],6)."\">";
  // DISPLAY THE THUMBNAILS
  echo '<img src="'.$piccy[$l].'" alt="'.$piccy[$l].'" border=0></a><br><br>';
  // IS NAME SELECTED TO SHOW?
  if ($name=="1") {
  echo '<font face="verdana" size="1">' . substr($piccy[$l],6) . '</font>';}
  echo '</td>';
  echo"\n";}
  echo '</tr></table></div>';}
  echo '<br><br><br><div align="center"><font face="verdana" size="1">Easy Gallery v1.2 :: <a href="www.dotdragnet.co.uk</a></font></div></body></html>';" target="_blank">http://www.dotdragnet.co.uk">www.dotdragnet.co.uk</a></font></div></body></html>';
?>

Koden ser sådan ud og den virker heller ikke. Jeg bemærkede nemlig også brugen den funktion php_self.
Avatar billede jakobdo Ekspert
27. oktober 2005 - 11:30 #12
Mange steder kan jeg se: $PHP_SELF
Ret det til: $_SERVER["PHP_SELF"]
Avatar billede niehans Nybegynder
27. oktober 2005 - 11:39 #13
Det originale
// GET THE LARGER PICTURE (IF SELECTED)
  echo "<a href=\"$PHP_SELF?large=".substr($piccy[$l],6)."\">";


Hvis jeg så ændre det til
// GET THE LARGER PICTURE (IF SELECTED)
  echo "<a href=\"$_SERVER["PHP_SELF"]?large=".substr($piccy[$l],6)."\">";

Gør den ingen ting...
Avatar billede jakobdo Ekspert
27. oktober 2005 - 12:29 #14
Det skal være: echo "<a href=\" . $_SERVER["PHP_SELF"] . "?large=".substr($piccy[$l],6)."\">";
Avatar billede niehans Nybegynder
28. oktober 2005 - 14:26 #15
<?
##############################################################################
# Easy Gallery                  Version 1.2                                  #
# Copyright 2001 DotDragNet    burt@dotdragnet.co.uk                        #
# PHP, Flash, ASP and Perl from http://www.dotdragnet.co.uk/                #
##############################################################################
# This script is copyright 2001, burt@dotdragnet.co.uk www.dotdragnet.co.uk  #
#                                                                            #
# COPYRIGHT NOTICE                                                          #
# Copyright 2001 DotDragNet.co.uk  All Rights Reserved.                      #
#                                                                            #
# This script may be used and modified free of charge by anyone so long as  #
# this copyright notice and the comments above remain intact.  By using this #
# script and its associated files, you agree to indemnify DotDragNet and all #
# other interested parties from any liability that might arise from it's use.#
#                                                                            #
# Selling the code for this program without prior written consent is        #
# expressly forbidden.  Obtain permission before redistributing this        #
# script over the Internet or in any other medium. In all cases copyright    #
# and header must remain intact.                                            #
#                                                                            #
# Please don't remove the link to www.dotdragnet.co.uk from the pages        #
# that this script creates.  All ya gotta do is let us know where it is in  #
# use, and you may then remove the link!                                    #
#                                                                            #
# DotDragNet also requests that should you make any improvements to this    #
# script, please be kind enough to let us know so that we may improve ours  #
# for the rest of the people who use it.                                    #
##############################################################################

// PLEASE READ THE ACCOMPANYING README.TXT

// DEFINE VARIABLES:

// NUMBER OF <TD> PER <TR> ( IN ENGLISH: COLUMNS IN THE PAGE :-) )
$td='4';
// BACKGROUND COLOR OF THE PAGE
$bg='white';
// SHOW THE NAME OF THE FILE?
$name='1'; // 1 = yes, 0 = no
// TITLE OF YOUR PAGE
$pagetitle='A selection of my images. Click each one to see a larger image.';

### --- CHANGE NOTHING BELOW THIS LINE UNLESS YOU ARE OK WITH PHP --- ###

// DIRECTORY NAME
$handle=opendir('.');

// GO
$piccy=array();
$count=0;
// SCAN THE DIR
while (($filename = readdir($handle))!==false) {
  // ADD IN EXTRA FILE TYPES HERE
  if (substr($filename,-4) == ".jpg" || substr($filename,-4) == ".gif" || substr($filename,-4) == ".png" || substr($filename,-4) == ".JPG" || substr($filename,-4) == ".GIF" || substr($filename,-4) == ".PNG"  || substr($filename,-4) == ".BMP" || substr($filename,-4) == ".bmp"){
  if (substr($filename,0,6) == "thumb_"){
    $piccy[$count] = $filename;
    $count++;
  }}}
// CLOSE DIR
closedir($handle); 
// SORT THE FILES
sort($piccy);
reset($piccy);

// DISPLAY LARGE IMAGE
if ($large){
        echo "<html><head><title>Easy Gallery :: " .$large. "</title></head><body bgcolor=" . $bg . ">";
  echo '<div align="center">';
// IS NAME SELECTED TO SHOW?
  if ($name=="1") {
      if (!(file_exists($large))){
          echo "No file of that name is uploaded.";
          exit;
      }
      echo '<br><font face="verdana" size="1">Selected image: ' . $large . '</font>';}
// SHOW THE PICTURE
  echo '<table width="100%" border=0 cellpadding=0 cellspacing=0>';
  echo '<tr>';
  echo '<td valign="middle" align="center"><a href=java script:history.back(-1)><img src="'.$large.'" alt="'.$large.'" border=0></a></td>';
  echo '<br>';
  echo '</tr></table>';
  echo '<br><br>';
  echo '<a href=java script:history.back(-1)>';
  echo '<font face="verdana" size="1">Back to the Thumbnail Gallery</font></a>';
        }
// NO LARGE PICCY, CREATE TABLE FOR THUMBNAILS:
else{
// start table, if you want cellpadding, cellspacing, colors, set them here
echo '<html><head><title> ::// Easy Gallery //::</title>';
echo '<head>';
echo "<body bgcolor=" . $bg . ">";
echo '<div align="center"><font face="verdana" size="1">' . $pagetitle . '</font><br>';
echo '<br><table width="100%" border=0 cellpadding=0 cellspacing=0>';
echo '<tr>';
// BECAUSE THE <TD> IS SET BY USER, WORK OUT THE PERCENTAGES:
$divider=ceil(100/$td);
if (($divider*$td)>100) $divider--;
// GRAB THE IMAGES
for ($l=0;$l<=sizeof($piccy)-1;$l++){
  $isend = strpos((($l)/$td),".");
  if (!$isend && ($l!=0)){echo "</tr>\n<tr><td colspan=$td><br></td></tr>\n<tr>\n";}
  if ($l==0){echo "\n";}
  // START THE <TD>
  echo '<td width="'.$divider.'%" valign="middle" align="center">';
  // GET THE LARGER PICTURE (IF SELECTED)
echo "<a href=\" . $_SERVER["PHP_SELF"] . "?large=".substr($piccy[$l],6)."\">";
  // DISPLAY THE THUMBNAILS
  echo '<img src="'.$piccy[$l].'" alt="'.$piccy[$l].'" border=0></a><br><br>';
  // IS NAME SELECTED TO SHOW?
  if ($name=="1") {
  echo '<font face="verdana" size="1">' . substr($piccy[$l],6) . '</font>';}
  echo '</td>';
  echo"\n";}
  echo '</tr></table></div>';}
  echo '<br><br><br><div align="center"><font face="verdana" size="1">Easy Gallery v1.2 :: <a href="www.dotdragnet.co.uk</a></font></div></body></html>';" target="_blank">http://www.dotdragnet.co.uk">www.dotdragnet.co.uk</a></font></div></body></html>';
?>

Jeg kan ikke forstå det... Det virker stadig ikke... Er det mig der er helt rundt på gulvet...

www.mentol.dk/prove/index.php
Avatar billede jakobdo Ekspert
28. oktober 2005 - 14:31 #16
Prøv at opret et spørgsmål specifikt på det...
Her er svar på dette spørgsmål.
Avatar billede jakobdo Ekspert
28. oktober 2005 - 20:32 #17
Takker for point!
Avatar billede niehans Nybegynder
28. oktober 2005 - 23:11 #18
Tak for hjælpen Jakob... Hæhæ.. Du har en go potion tålmodighed.... smiler.
Avatar billede jakobdo Ekspert
28. oktober 2005 - 23:13 #19
Jo tak, det skal der sgu godt nok også til nogen gange! :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester