FraXinuS Skrevet 1. februar 2006 Rapporter Del Skrevet 1. februar 2006 Jeg skal lage en liten side med gitartablatur på. Den skal være slik at alle kan se på sida og laste ned tabsene, men hvis de vil lage tabs og laste de opp så må de registrere seg før kan de laste de opp. Finnes det noen ferdig sider som fungerer til dette? Lenke til kommentar
stian90_2 Skrevet 1. februar 2006 Rapporter Del Skrevet 1. februar 2006 Brukersystem får du væfall på http://www.megaspill.net/content/view/42/1/1/6/ om du har mysql da =) Lenke til kommentar
Albino Skrevet 1. februar 2006 Rapporter Del Skrevet 1. februar 2006 Her står det mye fornuftig: http://no.php.net/features.file-upload Lenke til kommentar
FraXinuS Skrevet 1. februar 2006 Forfatter Rapporter Del Skrevet 1. februar 2006 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
stian90_2 Skrevet 1. februar 2006 Rapporter Del Skrevet 1. februar 2006 (endret) 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 1. februar 2006 av stianiquniez Lenke til kommentar
NH Skrevet 1. februar 2006 Rapporter Del Skrevet 1. februar 2006 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
Sjark Skrevet 2. februar 2006 Rapporter Del Skrevet 2. februar 2006 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
FraXinuS Skrevet 2. februar 2006 Forfatter Rapporter Del Skrevet 2. februar 2006 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
NH Skrevet 2. februar 2006 Rapporter Del Skrevet 2. februar 2006 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
FraXinuS Skrevet 2. februar 2006 Forfatter Rapporter Del Skrevet 2. februar 2006 (endret) 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 2. februar 2006 av FraXinuS Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå