Gå til innhold

Liten side der brukerene kan laste opp filer.


Anbefalte innlegg

Videoannonse
Annonse

Jeg har klart å få til slik at jeg kan uploade filer fra sida nå.

Men alle kan gjøre det, jeg vil at man må logge inn først for å få laste opp.

 

Noen som kan hjelpe meg å få til det?

 

Jeg bruker innloggings systemet stianiquniez linket til og uploading systemet Albino linket til.

 

Er dette riktig:?

 

upload.html

<!-- The data encoding type, enctype, MUST be specified as below -->
<form enctype="multipart/form-data" action="uploader.php" method="POST">
   <!-- MAX_FILE_SIZE must precede the file input field -->
   <input type="hidden" name="MAX_FILE_SIZE" value="10" />
   <!-- Name of input element determines name in $_FILES array -->
   Velg filen du vil laste opp: <input name="userfile" type="file" />
   <input type="submit" value="Send Fil" />
</form>

 

uploader.php

<?php
// In PHP versions earlier than 4.1.0, $HTTP_POST_FILES should be used instead
// of $_FILES.

$uploaddir = '/var/www/xxxxx/xxxx/xxxxx/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
  echo "File is valid, and was successfully uploaded.\n";
} else {
  echo "Possible file upload attack!\n";
}

echo 'Here is some more debugging info:';
print_r($_FILES);

print "</pre>";

?>

 

Leste at det kanskje ikke var så trygt det uploadings sakene der. Er det noe som kan skiftes for å få det tryggere?

Jeg vil at det kun er .txt filer som kan lastes opp og de kan ikke være over 10kb.

Lenke til kommentar

Om du bruker det jeg linket til skal det se noe ala slik ut:

 

<?php
session_start();
require_once("config.php");
$navn=$_SESSION["navn"];
$pass=$_SESSION["pass"];
$sql=mysql_query("SELECT id FROM bruker WHERE navn = '$navn' AND pass = '$pass'");
if(mysql_num_rows($sql) == 1){
?>
<!-- The data encoding type, enctype, MUST be specified as below -->
<form enctype="multipart/form-data" action="uploader.php" method="POST">
  <!-- MAX_FILE_SIZE must precede the file input field -->
  <input type="hidden" name="MAX_FILE_SIZE" value="10" />
  <!-- Name of input element determines name in $_FILES array -->
  Velg filen du vil laste opp: <input name="userfile" type="file" />
  <input type="submit" value="Send Fil" />
</form>
<?php
}
else {
echo "du må logge inn";
}
?>

 

uploader.php

 

 
<?php

session_start();

require_once("config.php");

$navn=$_SESSION["navn"];
$pass=$_SESSION["pass"];
$sql=mysql_query("SELECT id FROM bruker WHERE navn = '$navn' AND pass = '$pass'");
if(mysql_num_rows($sql) == 1){
$uploaddir = '/var/www/xxxxx/xxxx/xxxxx/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
 echo "File is valid, and was successfully uploaded.\n";
} else {
 echo "Possible file upload attack!\n";
}

echo 'Here is some more debugging info:';
print_r($_FILES);
print "</pre>";
}
else {
echo "du må logge inn!";
}
?>

 

EDIT: glemte og legge til /CODE ^^

Endret av stianiquniez
Lenke til kommentar

Dette scriptet er fremdeles usikkert. jeg kan helt fint laste opp akkurat hva jeg vil. MAX_FILE_SIZE er ingen garanti, dessuten kan jeg jo bare lage meg min egen form å hoste den lokalt.

 

du kan bruke noe slikt:

 

<?php

session_start();

require_once("config.php");

function valid($fil){
 $max_file_size = '10';
 if(preg_match('@^[a-zæøå0-9_-]+\.txt$@i', $fil)){
   if(filesize($fil) < $max_file_size){
      return true;
   }
   return false;
 }
 return false;
}

$navn=$_SESSION["navn"];
$pass=$_SESSION["pass"];
$sql=mysql_query("SELECT id FROM bruker WHERE navn = '$navn' AND pass = '$pass'");
if(mysql_num_rows($sql) == 1){
$uploaddir = '/var/www/xxxxx/xxxx/xxxxx/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

echo '<pre>';
if(valid($_FILES['userfile']['tmp_name']) == true){
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
 echo "File is valid, and was successfully uploaded.\n";
} else {
 echo "Possible file upload attack!\n";
}
}
echo 'Here is some more debugging info:';
print_r($_FILES);
print "</pre>";
}
else {
echo "du må logge inn!";
}
?>

 

ved hjelp av filesize() og preg_match har vi nå sikret oss at filen ikke er større enn 10kb og at den inneholder kun a-å 0-9 - eller _ og slutter på .txt

 

valider alltid input!

Lenke til kommentar
ved hjelp av filesize() og preg_match har vi nå sikret oss at filen ikke er større enn 10kb og at den inneholder kun a-å 0-9 - eller _ og slutter på .txt

 

valider alltid input!

5537861[/snapback]

 

Siden han skal bruke det til Tabulaturer (vis jeg leste rett da) så trenger han noen tegn til, som feks / \ osv, har lagt det til i koden under

 

Dette scriptet er fremdeles usikkert. jeg kan helt fint laste opp akkurat hva jeg vil. MAX_FILE_SIZE er ingen garanti, dessuten kan jeg jo bare lage meg min egen form å hoste den lokalt.

 

du kan bruke noe slikt:

 

<?php

session_start();

require_once("config.php");

function valid($fil){
 $max_file_size = '10';
 if(preg_match('@^[a-zæøå0-9_-/\]+\.txt$@i', $fil)){
   if(filesize($fil) < $max_file_size){
      return true;
   }
   return false;
 }
 return false;
}

$navn=$_SESSION["navn"];
$pass=$_SESSION["pass"];
$sql=mysql_query("SELECT id FROM bruker WHERE navn = '$navn' AND pass = '$pass'");
if(mysql_num_rows($sql) == 1){
$uploaddir = '/var/www/xxxxx/xxxx/xxxxx/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

echo '<pre>';
if(valid($_FILES['userfile']['tmp_name']) == true){
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
 echo "File is valid, and was successfully uploaded.\n";
} else {
 echo "Possible file upload attack!\n";
}
}
echo 'Here is some more debugging info:';
print_r($_FILES);
print "</pre>";
}
else {
echo "du må logge inn!";
}
?>

Lenke til kommentar

Sjekker uploadtingen der bare filnavnet eller søker den gjennom fila også? for hvis den gjør det så må jeg ha en god del flere tegn som er lov.

 

 

Men jeg sliter litt her. Når jeg prøver å laste opp nå så går det fin helt til jeg har lastet opp filen. Da får jeg dette:

Here is some more debugging info:Array
(
   [userfile] => Array
       (
           [name] => test.txt
           [type] => text/plain
           [tmp_name] => /var/www/hotserv.dk/tmp/users/4790/phpVLNaTM
           [error] => 0
           [size] => 20
       )

)

 

Jeg vet ikke om filen blir lastet opp eller ikke, men jeg finner den ingen plass.

Lenke til kommentar

lasso. du har en liten feil i syntaxen på Regexpen din, du må escape \ ellers escaper du ]

Mulig derfor du ikke finner fila på serveren din.

Beklager at jeg glemte disse tegnene.

 

valid() sjekker filstørrelsen, og sikrer at filnavnet ikke inneholder ulovlige tegn. det som nå er tillatt er:

 

\ / . a-æ 0-9 _ og - (ja, den er case-INsensitiv, merk 'i' etter siste @ )

 

<?php
function valid($fil){
$max_file_size = '10';
if(preg_match('@^[a-zæøå0-9\._-/\\]+\.txt$@i', $fil)){
  if(filesize($fil) < $max_file_size){
     return true;
  }
  return false;
}
return false;
}
?>

 

Nei, den sjekker ikke innholdet. Om filens innhold skal skrives rett til skjerm, husk å bruke htmlentities() eller htmlspesialchars() på innholdet før det sendes til output. Ganske vesentlig for å hindre fol i å legge inn javascript i tekstfilen(tviler på at dette er ønskelig)

Lenke til kommentar

Jeg har fått siden til å fungere nå. Jeg kan uploade filer og det fungere bra.

 

Jeg fant også ett innloggins system der brukerene registrerer seg og må aktivere kontoen med en email de får.

Det fungerte veldig bra å registrere og aktivere kontoen, men nå jeg skal logge inn så funker det ikke.

 

Jeg bruker dette innloggings systemet: http://www.hotscripts.com/Detailed/26480.html

 

Noen som vet hva som er kan være feil?

 

Eller vet noen andre lignende systemer som er enkle å sette opp.

Endret av FraXinuS
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...