Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  16 1173
Jeg trenger litt hjelp med et upload form.
Jeg har ikke mye erfaring med PHP og klarer ikke dette selv. Håper virkelig at noen av dere kan hjelpe meg

Tingen jeg prøver å få til, er å gjøre så dette uploadformet erstatter filen som ligger på serveren fra før av.

Man skal kunne laste opp xxxfilnavnxxx.pptx, også når man laster det opp, så endrer scriptet filnavnet til p.pptx og overskriver den som ligger der fra før av.
Jeg så at scriptet hadde et valg for å sette et standard filnavn, men hva den gjør da er å sette på en MD5 hash i starten av filnavnet.

Håper dere skjønner!

Kode

<?php

####################################################################
# File Upload Form 1.1
####################################################################
# For updates visit http://www.zubrag.com/scripts/
####################################################################

####################################################################
#  SETTINGS START
####################################################################

// Folder to upload files to. Must end with slash /
define('DESTINATION_FOLDER','/home/digunize/public_html/a/p/');

// Maximum allowed file size, Kb
// Set to zero to allow any size
define('MAX_FILE_SIZE', 4048);

// Upload success URL. User will be redirected to this page after upload.
define('SUCCESS_URL','http://www.example.com/upload-success.html');

// Allowed file extensions. Will only allow these extensions if not empty.
// Example: $exts = array('avi','mov','doc');
$exts = array();

// rename file after upload? false - leave original, true - rename to some unique filename
define('RENAME_FILE', true);

// put a string to append to the uploaded file name (after extension);
// this will reduce the risk of being hacked by uploading potentially unsafe files;
// sample strings: aaa, my, etc.
define('APPEND_STRING', 'ppt.pptx');

// Need uploads log? Logs would be saved in the MySql database.
define('DO_LOG', false);

// MySql data (in case you want to save uploads log)
define('DB_HOST','localhost'); // host, usually localhost
define('DB_DATABASE','mydb'); // database name
define('DB_USERNAME','myusername'); // username
define('DB_PASSWORD','password-here'); // password

/* NOTE: when using log, you have to create mysql table first for this script.
Copy paste following into your mysql admin tool (like PhpMyAdmin) to create table
If you are on cPanel, then prefix _uploads_log on line 205 with your username, so it would be like myusername_uploads_log

CREATE TABLE _uploads_log (
  log_id int(11) unsigned NOT NULL auto_increment,
  log_filename varchar(128) default '',
  log_size int(10) default 0,
  log_ip varchar(24) default '',
  log_date timestamp,
  PRIMARY KEY  (log_id),
  KEY (log_filename)
);

*/

####################################################################
###  END OF SETTINGS.   DO NOT CHANGE BELOW
####################################################################

// Allow script to work long enough to upload big files (in seconds, 2 days by default)
@set_time_limit(172800);

// following may need to be uncommented in case of problems
// ini_set("session.gc_maxlifetime","10800");

function showUploadForm($message='') {
  $max_file_size_tag = '';
  if (MAX_FILE_SIZE > 0) {
    // convert to bytes
    $max_file_size_tag = "<input name='MAX_FILE_SIZE' value='".(MAX_FILE_SIZE*1024)."' type='hidden' >\n";
  }

  // Load form template
  include ('file-upload.html');
}

// errors list
$errors = array();

$message = '';

// we should not exceed php.ini max file size
$ini_maxsize = ini_get('upload_max_filesize');
if (!is_numeric($ini_maxsize)) {
  if (strpos($ini_maxsize, 'M') !== false)
    $ini_maxsize = intval($ini_maxsize)*1024*1024;
  elseif (strpos($ini_maxsize, 'K') !== false)
    $ini_maxsize = intval($ini_maxsize)*1024;
  elseif (strpos($ini_maxsize, 'G') !== false)
    $ini_maxsize = intval($ini_maxsize)*1024*1024*1024;
}
if ($ini_maxsize < MAX_FILE_SIZE*1024) {
  $errors[] = "Alert! Maximum upload file size in php.ini (upload_max_filesize) is less than script's MAX_FILE_SIZE";
}

// show upload form
if (!isset($_POST['submit'])) {
  showUploadForm(join('',$errors));
}

// process file upload
else {
  
  while(true) {

    // make sure destination folder exists
    if (!@file_exists(DESTINATION_FOLDER)) {
      $errors[] = "Destination folder does not exist or no permissions to see it.";
      break;
    }

    // check for upload errors
    $error_code = $_FILES['filename']['error'];
    if ($error_code != UPLOAD_ERR_OK) {
      switch($error_code) {
        case UPLOAD_ERR_INI_SIZE: 
          // uploaded file exceeds the upload_max_filesize directive in php.ini
          $errors[] = "File is too big (1).";
          break;
        case UPLOAD_ERR_FORM_SIZE: 
          // uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form
          $errors[] = "File is too big (2).";
          break;
        case UPLOAD_ERR_PARTIAL:
          // uploaded file was only partially uploaded.
          $errors[] = "Could not upload file (1).";
          break;
        case UPLOAD_ERR_NO_FILE:
          // No file was uploaded
          $errors[] = "Could not upload file (2).";
          break;
        case UPLOAD_ERR_NO_TMP_DIR:
          // Missing a temporary folder
          $errors[] = "Could not upload file (3).";
          break;
        case UPLOAD_ERR_CANT_WRITE:
          // Failed to write file to disk
          $errors[] = "Could not upload file (4).";
          break;
        case 8:
          // File upload stopped by extension
          $errors[] = "Could not upload file (5).";
          break;
      } // switch

      // leave the while loop
      break;
    }

    // get file name (not including path)
    $filename = @basename($_FILES['filename']['name']);

    // filename of temp uploaded file
    $tmp_filename = $_FILES['filename']['tmp_name'];

    $file_ext = @strtolower(@strrchr($filename,"."));
    if (@strpos($file_ext,'.') === false) { // no dot? strange
      $errors[] = "Suspicious file name or could not determine file extension.";
      break;
    }
    $file_ext = @substr($file_ext, 1); // remove dot

    // check file type if needed
    if (count($exts)) {   /// some day maybe check also $_FILES['user_file']['type']
      if (!@in_array($file_ext, $exts)) {
        $errors[] = "Files of this type are not allowed for upload.";
        break;
      }
    }

    // destination filename, rename if set to
    $dest_filename = $filename;
    if (RENAME_FILE) {
      $dest_filename = md5(uniqid(rand(), true)) . '.' . $file_ext;
    }
    // append predefined string for safety
    $dest_filename = $dest_filename . APPEND_STRING;

    // get size
    $filesize = intval($_FILES["filename"]["size"]); // filesize($tmp_filename);

    // make sure file size is ok
    if (MAX_FILE_SIZE > 0 && MAX_FILE_SIZE*1024 < $filesize) {
      $errors[] = "File is too big (3).";
      break;
    }

    if (!@move_uploaded_file($tmp_filename , DESTINATION_FOLDER . $dest_filename)) {
      $errors[] = "Could not upload file (6).";
      break;
    }

    if (DO_LOG) {
      // Establish DB connection
      $link = @mysql_connect(DB_HOST, DB_USERNAME, DB_PASSWORD);
      if (!$link) {
        $errors[] = "Could not connect to mysql.";
        break;
      }
      $res = @mysql_select_db(DB_DATABASE, $link);
      if (!$res) {
        $errors[] = "Could not select database.";
        break;
      }
      $m_ip = mysql_real_escape_string($_SERVER['REMOTE_ADDR']);
      $m_size = $filesize;
      $m_fname = mysql_real_escape_string($dest_filename);
      $sql = "insert into _uploads_log (log_filename,log_size,log_ip) values ('$m_fname','$m_size','$m_ip')";
      $res = @mysql_query($sql);
      if (!$res) {
        $errors[] = "Could not run query.";
        break;
      }
      @mysql_free_result($res);
      @mysql_close($link);
    } // if (DO_LOG)


    // redirect to upload success url
    header('Location: ' . SUCCESS_URL);
    die();

    break;

  } // while(true)

  // Errors. Show upload form.
  $message = join('',$errors);
  showUploadForm($message);

}

?>
▼ ... over en uke senere ... ▼
Trådstarter
Hmm, nå har jeg gått over til noe litt enklere.
Men jeg får det ikke til å fungere helt, får feil på linje 5.

upload.php

Kode

<form enctype="multipart/form-data" action="config.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="20971520" />
Velg en fil: <input name="uploadedfile" type="file" /><br />
<input type="submit" value="Last opp" />
</form>

config.php

Kode

<?PHP
$target_path = "p/";
$nameyoulike = 'presentasjon';
$ext = 'ppt';
$target_path = $target_path . basename( $_FILES['uploadedfile']['name'], "$target_path/".$nameyoulike.".".$ext;)

if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
    echo "The file ".  basename( $_FILES['uploadedfile']['name']). 
    " has been uploaded";
} else{
    echo "There was an error uploading the file, please try again!";
}

?>
Noen som kan hjelpe meg litt
Sist endret av Pippole; 16. januar 2009 kl. 10:57.
Prøv denne: (testet)

Kode

$target = "p/"; //Der hvor filene skal lastes opp
$target = $target . basename( $_FILES['uploaded']['name']) ;
$ok=1;

if ($uploaded_size > 350000)
{
echo "Filen er for stor.<br />";
$ok=0;
}

elseif ($ok==0)
{
Echo "Filen ble ikke opplastet<br />";
}

else
{
if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target))
{
echo "Filen ". basename( $_FILES['uploadedfile']['name']). " er lastet opp";
}
else
{
echo "Sorry, et problem oppstod.";
}
Trådstarter
Jeg fikk det til selv Med alt jeg trengte. Innlogging, upload form, filnavn og alt.

Men jeg sliter litt med å sende en vellykket melding. Når filen er lastet opp, går den tilbake til innloggingen!

Kode

<?php
// Her definerer du brukernavnet og passordet for &aring; logge inn.
$username = "brukernavn";
$password = "presentasjon";

if ($_POST['txtUsername'] != $username || $_POST['txtPassword'] != $password) {
?>

<h2>Logg inn</h2> <!-- Headeren p&aring; toppen av loginsiden -->

<form name="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <p><label for="txtUsername">Brukernvn:</label>
    <br /><input type="text" title="Skriv inn brukernavnet ditt" name="txtUsername" /></p>

    <p><label for="txtpassword">Passord:</label>
    <br /><input type="password" title="Skriv inn passordet" name="txtPassword" /></p>

    <p><input type="submit" name="Submit" value="Logg inn" /></p>

</form>

<?php
}
else {

if (!empty($_FILES['file']))
{
    $fileName = addslashes($_FILES['file']['name']);
    -$target_path = "p/"; // Definerer mappen filene skal ligge i
	$nameyoulike = 'fil'; // filnavnet som skal brukes.
	$ext = 'ppt'; // filendelsen
	/* Grunnen til at vi setter filnavnet her er fordi at fremviser skriptet 
	henter en fil fra serveren. Det m&aring; derfor v&aelig;re satt et fast navn.
	*/
   
 
		move_uploaded_file($_FILES["file"]["tmp_name"], "$target_path/".$nameyoulike.".".$ext);
   
	   echo "<h1><u>Opplastingen var vellykket! For &aring; se filen kan du trykke <A HREF='http://www.web.no/hvam/p/fil.ppt>HER<A></u></h1>"; //Forteller at opplastingen var vellykket.
}
else
{
 
    echo "<form enctype='multipart/form-data' action='$_SERVER[PHP_SELF]' method='post'> <br />";
    //echo "<input type='hidden' name='MAX_FILE_SIZE' value='' /> <br />";
    echo "Velg 'Bla gjennom..' og finn frem presentasjonen du vil vise: <input type=\"file\" name=\"file\" />";
    echo "<input type='submit' value='Last opp' /> <br />";
    echo "</form>";
}
?>

<p>
<b><h3>VIKTIG:</h3> Det er veldig viktig at du laster opp en office 2003 presentasjon. Du m&aring; derfor lagre som en PPT (Office 2003) fil, og ikke <u>PPTX</u>
<br> Dersom du bruker Office 2003, kan du ignorere denne meldingen. Dersom du bruker Office 2007, m&aring; du gj&oslash;re f&oslash;lgende:</b><br>
N&aring;r du skal lagre presentasjonen, s&aring; skriver du et navn. Under feltet hvor du velger navn, m&aring; du velge PowerPoint  97-2003-presentasjon<br /><br />
Presentasjonen blir oppdatert hver halve time (08:00, 08:30, 09:00, 09:30, osv.):<br /><br />

Det vil si at dersom du laster opp en fil kl 11:30, s&aring; vil denne kommed med p&aring; oppdateringen som skjer kl 12:00.
</p>

<?php

}

?>
Trigonoceps occipita
vidarlo's Avatar
Donor
Den går jo åpenbart tilbake til innlogginga ettersom $_POST['txtUsername'] og $_POST['txtPassword'] er tom då.
Trådstarter
Men hvordan kan jeg ungå dette? Videresende til en annen side eller noe tenkte jeg litt på, dersom det er enklere.
Eller bruke en annen autenisering som baserer seg på cookies kanskje? Men jeg er usikkert på hvordan jeg skal gå frem der også, da jeg ikke klarer å skrive kode, jeg skjønner den bare så vidt!
Sitat av Pippole Vis innlegg
Men hvordan kan jeg ungå dette? Videresende til en annen side eller noe tenkte jeg litt på, dersom det er enklere.
Eller bruke en annen autenisering som baserer seg på cookies kanskje? Men jeg er usikkert på hvordan jeg skal gå frem der også, da jeg ikke klarer å skrive kode, jeg skjønner den bare så vidt!
Vis hele sitatet...
Bare et lite tips; les litt om dette emnet. Du kan nesten ikke forvente at andre skal skrive koden for deg.

Så jeg anbefaler deg å google litt, og deretter prøve deg frem.
Trådstarter
s1gh:
Jeg sa aldri at jeg trenger noen av dere til å skrive koden for meg. Den finner jeg sikkert lett på nett uansett
Men hvordan autenisering jeg kan bruke, som jeg spurte om, er det jeg lurer på
Du burde jo bruke sessions for dette.
Eksempel for session:

Kode

<php
if(isset($_POST['ok'])){
$_SESSION['bruker'] = $_POST['bruker'];
echo "Brukernavnet ditt er $_SESSION['bruker']";
}else{
echo "
<form action='' method='post'>
Brukernavn: <br /><input type='text' name='bruker'><br />
<input type='submit' name='ok'>
</form>
";

}
?>
Sist endret av poppolo; 16. januar 2009 kl. 15:30.
Trådstarter
Ok, da har jeg fått lagt til sessions også.
Men nå har jeg et ganske merkelig problem.

Når jeg tester scriptet lokalt på pcen, så fungerer det helt fint. Etter at jeg har lastet opp, så sender scriptet meg videre til en annen side.
Men når jeg tester den på internett, så fungerer det ikke. Etter at man har trykket på last opp, så blir man sendt til login screen, og ingen fil ble lastet opp.

Jeg har satt mappetillatelser til 777 og i scriptet har jeg prøvd å definere path til mappen fra bunn, og bare fra scriptet.
Det vil si (p er uploadmappen)
/p/
/hsphere/local/home/brukernavn/webadresse/presentasjon/p/

Håper at noen av dere kan hjelpe meg

Kode

<?php
    session_start (); 
	require_once("../class2.php");
	require_once(HEADERF);
    $user = 'Brukernavnet';
    $pass = 'Passordet';
    $isLoggedIn = false;
	$pathdirectory = '../page.php?13';
    
    if ( isset ( $_GET['logout'] ) ) {
        unset ( $_SESSION['isLoggedIn'] );
        unset ( $_SESSION['username'] );
        unset ( $_SESSION['password'] );
        die ( 'You are now logged out.' );
    }
    
    if ( isset ( $_POST['action'] ) && $_POST['action'] == 'login' ) {
        if ( $_POST['username'] == $user &&
             $_POST['password'] == $pass ) {
            $_SESSION['isLoggedIn'] = true;
            $_SESSION['username'] = $_POST['username'];
            $_SESSION['password'] = $_POST['password'];
        } else {
            die ( 'Brukernavnet eller passordet var feil. Vennligst pr&oslash;v igjen. Husk at det er forskjell p&aring; store og sm&aring; bokstaver.' );
        }
    }
    
?>

<?php
if ( isset ( $_SESSION['isLoggedIn'] ) && $_SESSION['isLoggedIn'] ) : 


if (!empty($_FILES['file']))
{
    $fileName = addslashes($_FILES['file']['name']);
    $target_path = "/hsphere/local/home/brukernavn/web/presentasjon/p/"; // Definerer mappen filene skal ligge i
	$nameyoulike = 'presentasjon'; // filnavnet som skal brukes.
	$ext = 'ppt'; // filendelsen

 
		move_uploaded_file($_FILES["file"]["tmp_name"], "$target_path/".$nameyoulike.".".$ext);
   
       echo "<meta http-equiv=\"refresh\" content=\"0;url=$pathdirectory\" />"; 

}
else
{
 
    echo "<form enctype='multipart/form-data' action='$_SERVER[PHP_SELF]' method='post'> <br />";
    //echo "<input type='hidden' name='MAX_FILE_SIZE' value='' /> <br />";
    echo "Velg 'Bla gjennom..' og finn frem presentasjonen du vil vise: <input type=\"file\" name=\"file\" />";
    echo "<input type='submit' value='Last opp' /> <br />";
    echo "</form>";
}


?>

<p>
<b><h3>VIKTIG:</h3> Det er veldig viktig at du laster opp en office 2003 presentasjon. Du m&aring; derfor lagre som en PPT (Office 2003) fil, og ikke <u>PPTX</u>
<br> Dersom du bruker Office 2003, kan du ignorere denne meldingen. Dersom du bruker Office 2007, m&aring; du gj&oslash;re f&oslash;lgende:</b><br>
N&aring;r du skal lagre presentasjonen, s&aring; skriver du et navn. Under feltet hvor du velger navn, m&aring; du velge PowerPoint  97-2003-presentasjon<br /><br />
Presentasjonen blir oppdatert hver halve time (08:00, 08:30, 09:00, 09:30, osv.):<br /><br />

Det vil si at dersom du laster opp en fil kl 11:30, s&aring; vil denne kommed med p&aring; oppdateringen som skjer kl 12:00.
</p>
<p><a href="?logout">Logg ut</a>.</p>

<?php else : ?>
    <form method="post">
        <input type="text" name="username" />
        <input type="password" name="password" />
        <input type="hidden" name="action" value="login" />
        <input type="submit" name="submit" value="Logg inn" />
    </form>
<?php endif ; ?>

<?PHP
require_once(FOOTERF);
?>
Har nå funnet ut at det har noe med session å gjøre.
Når jeg fjernet den delen, så fungere alt perfekt. Men skjønner ikke helt hva som er galt med den
Sist endret av Pippole; 17. januar 2009 kl. 14:58. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
Trådstarter
Kan det være et problem med serveren?
Siden at ettersom det fungerer smertefritt lokalt, på en windows XAMPP server, men når jeg tester på webserveren, så fungerer det ikke?

Kanskje serveren ikke takler sessions (noe som er usannsynlig).
Er det noe jeg må stille på?

Sorry for at jeg har en del spørsmål, men jeg leser alt dere sier og prøver etter beste evne å forstå det!
Jeg har ikke sett igjennom hele logikken i koden over, men jeg la merke til dette:

Kode

<?php if ( isset ( $_POST['action'] ) && $_POST['action'] == 'login' ) ?>
Du definerer aldri noen POST-variabel som innholder hverken action eller login, heller ingen GET-variabel, så det er sagt. Sjekk heller om login-formen er sendt slik:

Kode

<?php if ( isset($_POST['login']) ) ?>
Så bytter du navnet på login-submit-knappen fra submit til login (så den ikke krasjer med upload-formen)
Trådstarter
Ahh, takker
Byttet slik du anbefalte, og det virker jo ganske logisk det du sier.
Men det forklarte ikke hvorfor ikke det fungerer å laste opp filer.
Serveren klarer jo fint sessions, iom at det er en annen intern nettside på den som bruker det.
Har gått igjennom koden din gjort den om litt. Er ikke sikker på hva som var galt med din versjon, men denne fungerer i alle fall

Kode

<?php
session_start ();
require_once('../class2.php');
require_once(HEADERF);

$this_page     = 'index.php';
$pathDirectory = '../page.php?13';
$target_path   = '/hsphere/local/home/brukernavn/web/presentasjon/p/';
$upload_name   = false; // false = auto. string = filename
$ext           = 'ppt';

$users = array (
	'brukernavn' => 'passord'
);

if ( isset($_GET['logout']) ) {
	$_SESSION['user'] = false;
}

$output = '';
$error  = false;

if (!is_dir($target_path)) die('Mappen for opplastning finnes ikke: ' . $target_path);

if ( $_SESSION['user'] && isset($users[$_SESSION['user']]) ) {
	$output .= '
	  <p><b><h3>VIKTIG:</h3> Det er veldig viktig at du laster opp en office 2003 presentasjon. 
	    Du m&aring; derfor lagre som en PPT (Office 2003) fil, og ikke <u>PPTX</u>
		<br> Dersom du bruker Office 2003, kan du ignorere denne meldingen. Dersom du bruker Office 2007, m&aring; du gj&oslash;re f&oslash;lgende:</b><br>
		N&aring;r du skal lagre presentasjonen, s&aring; skriver du et navn. Under feltet hvor du velger navn, m&aring; du velge PowerPoint  97-2003-presentasjon<br />
		<br />
		Presentasjonen blir oppdatert hver halve time (08:00, 08:30, 09:00, 09:30, osv.):<br />
		<br />
		Det vil si at dersom du laster opp en fil kl 11:30, s&aring; vil denne kommed med p&aring; oppdateringen som skjer kl 12:00.
	  </p>
	  <p><a href="?logout">Logg ut</a></p>
	';
	
	// UPLOAD
	if ( isset($_POST['upload']) ) {
		$fileName  = addslashes($_FILES['file']['name']);
		$pathInfo  = pathinfo($fileName);
		$imageType = $pathInfo['extension'];
		
		if ( !isset($_FILES['file']) || empty($_FILES['file']['name']) ) {
			$error = 'Du må velge en fil for opplastning';
		} elseif ( $imageType != $ext ) {
			$error = 'Du kan kun laste opp filer med filendelsen <strong>'.$ext.'</strong>';
		} else {
			$fileName = $upload_name ? $upload_name . '.' . $ext : $fileName;
			if ( move_uploaded_file($_FILES['file']['tmp_name'], $target_path .'/'. $fileName) ) {
				header('Location: ' . $pathDirectory);
				die();
			} else {
				$error = 'Kunne ikke laste opp filen grunnet en feil';
			}
		}
		$error = $error ? '<p class="error">'.$error.'</p>' : '';
	}
	
	$output .= '
	  '.$error.'
	  <form action="" enctype="multipart/form-data" method="post">
	    Velg "Bla gjennom.." og finn frem presentasjonen du vil vise: 
		<input type="file" name="file" />
		<input type="submit" name="upload" value="Last opp" />
	  </form>
	';
}
else {
	// LOGIN
	if ( isset($_POST['login']) ) {
		if ( isset($users[$_POST['username']]) && $users[$_POST['username']] == $_POST['password'] ) {
			$_SESSION['user'] = $_POST['username'];
			header('Location: ' . $this_page); 
			die();
		} else {
			$error = 'Feil brukernavn og/ eller passord!';
		}
		$error = $error ? '<p class="error">'.$error.'</p>' : '';
	}
	
	$output .= '
	  <h1>Logg inn</h1>
	  '.$error.'
	  <form action="'.$this_page.'" method="post">
        <input type="text" name="username" />
        <input type="password" name="password" />
        <input type="submit" name="login" value="Logg inn" />
	  </form>
	';
}

echo $output;

require_once(FOOTERF); 
?>
Sitat av ma10as Vis innlegg
Har gått igjennom koden din gjort den om litt. Er ikke sikker på hva som var galt med din versjon, men denne fungerer i alle fall

Kode

<?php
session_start ();
require_once('../class2.php');
require_once(HEADERF);

$this_page     = 'index.php';
$pathDirectory = '../page.php?13';
$target_path   = '/hsphere/local/home/brukernavn/web/presentasjon/p/';
$upload_name   = false; // false = auto. string = filename
$ext           = 'ppt';

$users = array (
	'brukernavn' => 'passord'
);

if ( isset($_GET['logout']) ) {
	$_SESSION['user'] = false;
}

$output = '';
$error  = false;

if (!is_dir($target_path)) die('Mappen for opplastning finnes ikke: ' . $target_path);

if ( $_SESSION['user'] && isset($users[$_SESSION['user']]) ) {
	$output .= '
	  <p><b><h3>VIKTIG:</h3> Det er veldig viktig at du laster opp en office 2003 presentasjon. 
	    Du m&aring; derfor lagre som en PPT (Office 2003) fil, og ikke <u>PPTX</u>
		<br> Dersom du bruker Office 2003, kan du ignorere denne meldingen. Dersom du bruker Office 2007, m&aring; du gj&oslash;re f&oslash;lgende:</b><br>
		N&aring;r du skal lagre presentasjonen, s&aring; skriver du et navn. Under feltet hvor du velger navn, m&aring; du velge PowerPoint  97-2003-presentasjon<br />
		<br />
		Presentasjonen blir oppdatert hver halve time (08:00, 08:30, 09:00, 09:30, osv.):<br />
		<br />
		Det vil si at dersom du laster opp en fil kl 11:30, s&aring; vil denne kommed med p&aring; oppdateringen som skjer kl 12:00.
	  </p>
	  <p><a href="?logout">Logg ut</a></p>
	';
	
	// UPLOAD
	if ( isset($_POST['upload']) ) {
		$fileName  = addslashes($_FILES['file']['name']);
		$pathInfo  = pathinfo($fileName);
		$imageType = $pathInfo['extension'];
		
		if ( !isset($_FILES['file']) || empty($_FILES['file']['name']) ) {
			$error = 'Du må velge en fil for opplastning';
		} elseif ( $imageType != $ext ) {
			$error = 'Du kan kun laste opp filer med filendelsen <strong>'.$ext.'</strong>';
		} else {
			$fileName = $upload_name ? $upload_name . '.' . $ext : $fileName;
			if ( move_uploaded_file($_FILES['file']['tmp_name'], $target_path .'/'. $fileName) ) {
				header('Location: ' . $pathDirectory);
				die();
			} else {
				$error = 'Kunne ikke laste opp filen grunnet en feil';
			}
		}
		$error = $error ? '<p class="error">'.$error.'</p>' : '';
	}
	
	$output .= '
	  '.$error.'
	  <form action="" enctype="multipart/form-data" method="post">
	    Velg "Bla gjennom.." og finn frem presentasjonen du vil vise: 
		<input type="file" name="file" />
		<input type="submit" name="upload" value="Last opp" />
	  </form>
	';
}
else {
	// LOGIN
	if ( isset($_POST['login']) ) {
		if ( isset($users[$_POST['username']]) && $users[$_POST['username']] == $_POST['password'] ) {
			$_SESSION['user'] = $_POST['username'];
			header('Location: ' . $this_page); 
			die();
		} else {
			$error = 'Feil brukernavn og/ eller passord!';
		}
		$error = $error ? '<p class="error">'.$error.'</p>' : '';
	}
	
	$output .= '
	  <h1>Logg inn</h1>
	  '.$error.'
	  <form action="'.$this_page.'" method="post">
        <input type="text" name="username" />
        <input type="password" name="password" />
        <input type="submit" name="login" value="Logg inn" />
	  </form>
	';
}

echo $output;

require_once(FOOTERF); 
?>
Vis hele sitatet...
Edit: Jeg har kunn gått utifra din kode. Du bør derfor legge til en strengere validering ved opplastning av filer.

Eh, den siste redigeringen ble litt merkelig. Skulle redigere, ikke quote meg selv?
Sist endret av ma10as; 19. januar 2009 kl. 22:06. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
Trådstarter
Den koden der så litt mer avansert ut en min.

Men er noe av det samme problemet her også. Når jeg prøver å logge inn med feil brukernavn og passord, så står det at det er feil brukernavn og passord. Om jeg bruker riktig, så forteller den ikke om noen feil, men viser fortsatt loginen.

Vil det si at det er noe galt med serveroppsettet?

Liten update:
Har vært i samtale med servetheworld, og de mener at problemet ikke ligger hos dem, men i scriptet.

Noen som kan prøve på noen fler webservere og avkrefte/bekrefte dette?
Sist endret av Pippole; 20. januar 2009 kl. 09:28. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
Jeg testet koden min før jeg sendte den, og den fungerer fint hos meg. Sett at det ikke er noen feilmeldinger som blir skjult om error_reporting er på?
Trådstarter
Sitat av ma10as Vis innlegg
Jeg testet koden min før jeg sendte den, og den fungerer fint hos meg. Sett at det ikke er noen feilmeldinger som blir skjult om error_reporting er på?
Vis hele sitatet...
Nei, får ingen feilmeldinger heller. Når jeg skrur på den funksjonen, så har jeg det ett-tallet som skal være der ved innlogging. Men kommer ikke noe mer.

Hosten vår var også helt sikre på at feilen ikke lå hos dem, men om det var noen tjenester eller noe lignende som ikke fungerte som det skulle, så skulle vi si ifra.

Er jo kjemperart at det ikke fungerer. Fungerer lokalt, men ikke hos servetheworld.
Kan det ha noe med andre sessions å gjøre, eller at det ikke ligger i root?