Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Consentire tutte le estensioni

    Ciao, ho un problema con un form php, scaricato qui (html.it) ovvero consentire tutte le estensioni, mi spiego meglio: dentro il file php è abilitato usare solo jpg,gif,png,zip,rar,txt,doc ed io vorrei fare in modo che gli utenti del mio sito possano uploadare i files con qualsiasi estensione.
    Codice PHP:
    codice:
    $allow_types=array("jpg","gif","png","zip","rar","txt","doc");
    Vorrei precisare che ho gia provato a mettere "*" e ".*" ma non funziona
    Ringrazio in anticipo

  2. #2
    scusa non capisco non ti basta aggiungere
    Codice PHP:
    $allow_types=array("jpg","gif","png","zip","rar","txt","doc","ALtre_estensioni"); 
    Per sicurezza, gli utenti dovrebbero uppare solo determinati file e non tutti i file.
    Se un utente carica un .exe maligno e tu lo esegui.... sai che succede al tuo pc ?
    Programmatore e responsabile seo della testata giornalistica www.europacalcio.it - www.canforagennaro.it

  3. #3

    Re: Consentire tutte le estensioni

    Originariamente inviato da ExtraSura
    Ciao, ho un problema con un form php, scaricato qui (html.it) ovvero consentire tutte le estensioni, mi spiego meglio: dentro il file php è abilitato usare solo jpg,gif,png,zip,rar,txt,doc ed io vorrei fare in modo che gli utenti del mio sito possano uploadare i files con qualsiasi estensione.
    Codice PHP:
    codice:
    $allow_types=array("jpg","gif","png","zip","rar","txt","doc");
    Vorrei precisare che ho gia provato a mettere "*" e ".*" ma non funziona
    Ringrazio in anticipo
    Sisi lo sò, il problema è che le estensioni sono visibili sul form, inoltre è un sito creato solo per gente che conosco abbastanza bene, quindi posso fidarmi. Quindi come posso fare?

  4. #4
    Una cosa pensata al volo,
    Fai un if con la condizione al contrario, cioè invece di avere
    Codice PHP:
    if($allow_types)
    {
      
    // accetta le estensioni...

    Fai che quelli presenti nella variabile $allow_types non devono essere inviati (ovviamente rimani solo un estensione inventata)

    l'if lo fai così
    Codice PHP:
    if(!$allow_types)
    {
      
    // invia tutto

    Programmatore e responsabile seo della testata giornalistica www.europacalcio.it - www.canforagennaro.it

  5. #5
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    scusa eh, ma non fai prima a togliere ogni pezzo di codice che esegue il controllo?
    A parte che non lo farei neanche fidandomi ciecamente degli utenti, ti immagini cosa potrebbe accadere se il meccanismo di login (perché fanno un login, vero?) venisse violato da un attaccante?

  6. #6
    Originariamente inviato da clasku
    scusa eh, ma non fai prima a togliere ogni pezzo di codice che esegue il controllo?
    A parte che non lo farei neanche fidandomi ciecamente degli utenti, ti immagini cosa potrebbe accadere se il meccanismo di login (perché fanno un login, vero?) venisse violato da un attaccante?
    A parte questo,
    ma poi anche se vuoi far uppare ogni file, basta aggiungere l'estensione .rar e dire alla cerchia chiusa di mettere tutti i file nell'archivio e inviarlo.
    Programmatore e responsabile seo della testata giornalistica www.europacalcio.it - www.canforagennaro.it

  7. #7
    Originariamente inviato da Exitpeople
    Una cosa pensata al volo,
    Fai un if con la condizione al contrario, cioè invece di avere
    Codice PHP:
    if($allow_types)
    {
      
    // accetta le estensioni...

    Fai che quelli presenti nella variabile $allow_types non devono essere inviati (ovviamente rimani solo un estensione inventata)

    l'if lo fai così
    Codice PHP:
    if(!$allow_types)
    {
      
    // invia tutto

    Scusami, essendo un neofita di PHP non ho capito molto, potresti per favore spiegarti meglio? Grazie 1000 e scusa per il disturbo.

  8. #8
    La condizione la fai al contrario così :
    Codice PHP:
    if(!$allow_types)
    {
      
    // invia tutto

    Quel punto esclamativo ( ! ) prima della variabile, non fa altro che dire al motore php questo :
    Se il file inviato ha l'estensione diversa da quello nella variabile $allow_types allora invia tutto.
    Come dicevo prima nella variabile $allow_types rimani solo l'estensione che non ti serve.

    Oppure come suggerito prima, dal collega, elimina tutti i controlli sulle estensioni
    Programmatore e responsabile seo della testata giornalistica www.europacalcio.it - www.canforagennaro.it

  9. #9
    Grazie 1000, ho un ultimo problema: io ho assegnato infiniti mb per l' upload (9999999999999999999999999999999999999) solo che vorrei che al posto di 99999.... venisse scritto Infiniti MB, come posso fare? Posto il codice PHP (non tra il tag code poichè viene tutto su una linea)

    <?
    error_reporting(7);

    // Max size PER file in KB, not bytes for simplicity!
    $max_file_size="9999999999999999999999999999999999 999";

    // Max size for all files COMBINED in KB, not bytes for simplicity!
    $max_combined_size="999999999999999999999999999999 9999999";

    //How many file uploads do you want to allow at a time?
    $file_uploads="2";

    //The name of the uploader..
    $websitename="phUploader 1.2";

    // Use random file names? true=yes (recommended), false=use original file name. Random names will help prevent overwritting of existing files!
    $random_name=true;

    // Please keep the array structure.
    $allow_types=array("jpg","gif","png","zip","rar"," txt","doc","swf","exe","tiff","dmg");

    // Path to files folder. If this fails use $fullpath below. With trailing slash
    $folder="./uploads/";

    // Full url to where files are stored. With Trailing Slash
    $full_url="http://www.YOUR_SITE.com/uploads/";

    // Only use this variable if you wish to use full server paths. Otherwise leave this empty! With trailing slash
    $fullpath="";

    //Use this only if you want to password protect your uploads.
    $password="";

    /*
    //================================================== ==============================
    * ! ATTENTION !
    //================================================== ==============================
    : Don't edit below this line unless you know some php. Editing some variables or other stuff could cause undeseriable results!!
    */

    // MD5 the password.. why not?
    $password_md5=md5($password);

    // If you set a password this is how they get verified!
    If($password) {
    If($_POST['verify_password']==true) {
    If(md5($_POST['check_password'])==$password_md5) {
    setcookie("phUploader",$password_md5,time()+86400) ;
    sleep(1); //seems to help some people.
    header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);
    exit;

    }
    }
    }

    // The password form, if you set a password and the user has not entered it this will show.
    $password_form="";
    If($password) {
    If($_COOKIE['phUploader']!=$password_md5) {
    $password_form="<form method=\"POST\" action=\"".$_SERVER['PHP_SELF']."\">\n";
    $password_form.="<table align=\"center\" class=\"table\">\n";
    $password_form.="<tr>\n";
    $password_form.="<td width=\"100%\" class=\"table_header\" colspan=\"2\">Password Required</td>\n";
    $password_form.="</tr>\n";
    $password_form.="<tr>\n";
    $password_form.="<td width=\"35%\" class=\"table_body\">Enter Password:</td>\n";
    $password_form.="<td width=\"65%\" class=\"table_body\"><input type=\"password\" name=\"check_password\" /></td>\n";
    $password_form.="</tr>\n";
    $password_form.="<td colspan=\"2\" align=\"center\" class=\"table_body\">\n";
    $password_form.="<input type=\"hidden\" name=\"verify_password\" value=\"true\">\n";
    $password_form.="<input type=\"submit\" value=\" Verify Password \" />\n";
    $password_form.="</td>\n";
    $password_form.="</tr>\n";
    $password_form.="</table>\n";
    $password_form.="</form>\n";
    }
    }

    // Function to get the extension a file.
    function get_ext($key) {
    $key=strtolower(substr(strrchr($key, "."), 1));
    // Cause there the same right?
    $key=str_replace("jpeg","jpg",$key);
    return $key;
    }

    $ext_count=count($allow_types);
    $i=0;
    foreach($allow_types AS $extension) {

    //Gets rid of the last comma for display purpose..

    If($i <= $ext_count-2) {
    $types .="*.".$extension.", ";
    } Else {
    $types .="*.".$extension;
    }
    $i++;
    }
    unset($i,$ext_count); // why not

    $error="";
    $display_message="";
    $uploaded==false;

    // Dont allow post if $password_form has been populated
    If($_POST['submit']==true AND !$password_form) {

    For($i=0; $i <= $file_uploads-1; $i++) {

    If($_FILES['file']['name'][$i]) {

    $ext=get_ext($_FILES['file']['name'][$i]);
    $size=$_FILES['file']['size'][$i];
    $max_bytes=$max_file_size*1024;

    // For random names
    If($random_name){
    $file_name[$i]=time()+rand(0,100000).".".$ext;
    } Else {
    $file_name[$i]=$_FILES['file']['name'][$i];
    }

    //Check if the file type uploaded is a valid file type.

    If(!in_array($ext, $allow_types)) {

    $error.= "Invalid extension for your file: ".$_FILES['file']['name'][$i].", only ".$types." are allowed.
    Your file(s) were not uploaded.
    ";

    //Check the size of each file

    } Elseif($size > $max_bytes) {

    $error.= "Your file: ".$_FILES['file']['name'][$i]." is to big. Max file size is ".$max_file_size."kb.
    Your file(s) were not uploaded.
    ";

    // Check if the file already exists on the server..
    } Elseif(file_exists($folder.$file_name[$i])) {

    $error.= "The file: ".$_FILES['file']['name'][$i]." exists on this server, please rename your file.
    Your file(s) were not uploaded.
    ";

    }

    } // If Files

    } // For

    //Tally the size of all the files uploaded, check if it's over the ammount.

    $total_size=array_sum($_FILES['file']['size']);

    $max_combined_bytes=$max_combined_size*1024;

    If($total_size > $max_combined_bytes) {
    $error.="The max size allowed for all your files combined is ".$max_combined_size."kb
    ";
    }


    // If there was an error take notes here!

    If($error) {

    $display_message=$error;

    } Else {

    // No errors so lets do some uploading!

    For($i=0; $i <= $file_uploads-1; $i++) {

    If($_FILES['file']['name'][$i]) {

    If(@move_uploaded_file($_FILES['file']['tmp_name'][$i],$folder.$file_name[$i])) {
    $uploaded=true;
    } Else {
    $display_message.="Couldn't copy ".$file_name[$i]." to server, please make sure ".$folder." is chmod 777 and the path is correct.\n";
    }
    }

    } //For

    } // Else

    } // $_POST AND !$password_form

    /*
    //================================================== ==============================
    * Start the form layout
    //================================================== ==============================
    :- Please know what your doing before editing below. Sorry for the stop and start php.. people requested that I use only html for the form..
    */
    ?>


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
    <meta http-equiv="Content-Language" content="en-us" />
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title><?php echo $websitename; ?> - Powered By phUploader</title>

    <style type="text/css">
    body{
    background-color:#FFFFFF;
    font-family: Verdana, Arial, sans-serif;
    font-size: 12pt;
    color: #000000;
    }

    .error_message{
    font-family: Verdana, Arial, sans-serif;
    font-size: 11pt;
    color: #FF0000;
    }

    .uploaded_message{
    font-family: Verdana, Arial, sans-serif;
    font-size: 11pt;
    color: #000000;
    }

    a:link{
    text-decoration:none;
    color: #000000;
    }
    a:visited{
    text-decoration:none;
    color: #000000;
    }
    a:hover{
    text-decoration:none;
    color: #000000;
    }


    .table {
    border-collapse:collapse;
    border:1px solid #000000;
    width:450px;
    }

    .table_header{
    border:1px solid #070707;
    background-color:#C03738;
    font-family: Verdana, Arial, sans-serif;
    font-size: 11pt;
    font-weight:bold;
    color: #FFFFFF;
    text-align:center;
    padding:2px;
    }

    .upload_info{
    border:1px solid #070707;
    background-color:#EBEBEB;
    font-family: Verdana, Arial, sans-serif;
    font-size: 8pt;
    color: #000000;
    padding:4px;
    }


    .table_body{
    border:1px solid #070707;
    background-color:#EBEBEB;
    font-family: Verdana, Arial, sans-serif;
    font-size: 10pt;
    color: #000000;
    padding:2px;
    }


    .table_footer{
    border:1px solid #070707;
    background-color:#C03738;
    text-align:center;
    padding:2px;
    }


    input,select,textarea {
    font-family: Verdana, Arial, sans-serif;
    font-size: 10pt;
    color: #000000;
    background-color:#AFAEAE;
    border:1px solid #000000;
    }

    .copyright {
    border:0px;
    font-family: Verdana, Arial, sans-serif;
    font-size: 9pt;
    color: #000000;
    text-align:right;
    }

    form{
    padding:0px;
    margin:0px;
    }
    </style>

    <?
    If($password_form) {

    Echo $password_form;

    } Elseif($uploaded==true) {?>

    <table align="center"class="table">

    <tr>
    <td class="table_header" colspan="2">Your file(s) have been uploaded! </td>
    </tr>
    <tr>
    <td class="table_body">


    <?
    For($i=0; $i <= $file_uploads-1; $i++) {

    If($_FILES['file']['name'][$i]) {
    $file=$i+1;

    Echo("File #".$file.": <a href=\"".$full_url.$file_name[$i]."\" target=\"_blank\">".$full_url.$file_name[$i]."</a>

    \n");
    }

    }

    ?>


    Go Back


    </td>
    </tr>
    </table>

    <?} Else {?>

    <?If($display_message){?>
    <div align="center" class="error_message"><?=$display_message;?></div>


    <?}?>

    <form action="<?=$_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data" name="phuploader">
    <table align="center"class="table">

    <tr>
    <td class="table_header" colspan="2"><?=$websitename;?> </td>
    </tr>
    <tr>
    <td colspan="2" class="upload_info">
    Allowed Types: <?=$types?>

    Max size per file: <?=$max_file_size?>kb.

    Max size for all files combined: <?=$max_combined_size?>kb.

    </td>
    </tr>
    <?For($i=0;$i <= $file_uploads-1;$i++) {?>
    <tr>
    <td class="table_body" width="20%">Select File: </td>
    <td class="table_body" width="80%"><input type="file" name="file[]" size="30" /></td>
    </tr>
    <?}?>
    <tr>
    <td colspan="2" align="center" class="table_footer">
    <input type="hidden" name="submit" value="true" />
    <input type="submit" value=" Upload File(s) " />
    <input type="reset" name="reset" value=" Reset Form " />
    </td>
    </tr>
    </table>
    </form>

    <?}//Please leave this here.. it really dosen't make people hate you or make your site look bad.. ?>
    <table class="table" style="border:0px;" align="center">
    <tr>
    <td><div class="copyright">&copy;phUploader</div></td>
    </tr>
    </table>
    </body>
    </html>



    Se volete dare un' occhiata, questo è il sito: http://png.altervista.org/Uploader_9/phUploader.php

  10. #10
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    infiniti non esisterà mai, ti scontrerai comunque con le limitazioni imposte dal file di configurazione php.ini, che risiede sul server e su un hosting non dedicato generalmente non è modificabile. Inoltre credo che un file troppo grande manderebbe in timeout lo script, restituendo errore e non completando l'attività.

    In ogni caso, se vuoi scrivere "Infiniti MB", hai due strade:
    1. imposti una nuova variabile nello script con la scritta che ti interessa far vedere e poi la richiami nello script dove viene impostata la visualizzazione a schermo
    Max size per file: <?=$max_file_size?>kb.

    Max size for all files combined: <?=$max_combined_size?>kb.

    2. scambi, sempre nel pezzo di cui sopra, la variabile con una stringa "scolpita" nel codice, eliminando tutto ciò che riguarda il php (che non serve a nulla, se fai questa scelta).

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.