Autor Zpráva
Křeček
Profil
<?php
if (substr(phpversion(),0,3) <= '4.1') exit("Nepodařilo se spustit skript.");
$max_att = 1000000 ; // 1MB MAX
$up_dir = "svecon_upload/";
$PHP_SELF = $_SERVER['PHP_SELF'];
if(get_magic_quotes_gpc()) {
strip_slashes($_GET);
strip_slashes($_POST);
strip_slashes($_COOKIES);
}
function & strip_slashes (&$str) {
if(is_array($str)) {
while (list($key, $val) = each ($str)) {
$str[$key] = strip_slashes ($val);
}
}
else {
$str = stripslashes ($str);
}
return $str;
}
$mt = eregi_replace('|', ', ', $mime_types);
$ex = eregi_replace('|', ', ', $extensions);
$mb = $max_att / 1048576;
?>
<form name="a" action='<?php echo "$PHP_SELF" ?>' method="post" enctype="multipart/form-data">
<input type="file" name="fileatt"><br>Stisknutím tlačítka Upload souhlasíte s <a href="index.php?page=pravidla">pravidly</a>.
<br><input class="butt" type="submit" name="upload_submit" value="Upload">
</form>
<?php
if(isset($_POST['upload_submit'])) {
//set_time_limit(0); //// POVOLIT NEOMEZENÝ ČAS
$valid = true;
$fileatt_size = $_FILES['fileatt']['size'];
$fileatt_type = $_FILES['fileatt']['type'];
$fileatt_name = $_FILES['fileatt']['name'];
$fileatt_tmp = $_FILES['fileatt']['tmp_name'];

if($fileatt_size > $max_att) {
$valid = false;
$err_msg .= 'Chyba:<br>Soubor je větší než povolená velikost.';
}
umask($oldumask);
}
$dest = $up_dir . $fileatt_name;
if($valid) {
if(!move_uploaded_file($fileatt_tmp,$dest)) {
$valid = false;
$err_msg .= "Chyba:<br>Soubor se nepodařilo uložit.";
}
else {
echo "Odkaz na soubor:<br><a href='index.php?page=download&ID=$fileatt_name' target='_blank'>index.php?page=download&ID=$fileatt_name</a>";
}
}
if(!$valid) echo "<b>$err_msg</b>";
?>

Jak mám zakázat typ souboru PHP při uploadu?
bukaj
Profil
před podmínku s $valid přidat něco jako:

if($fileatt_type == "application/x-php"){
$valid = FALSE;
$err_msg .= "Chyba: Nepovolený typ souboru.";
}
Křeček
Profil
<?php
if (substr(phpversion(),0,3) <= '4.1') exit("Nepodařilo se spustit skript.");
$max_att = 1000000 ; // 1MB MAX
$up_dir = "svecon_upload/";
$PHP_SELF = $_SERVER['PHP_SELF'];
if(get_magic_quotes_gpc()) {
strip_slashes($_GET);
strip_slashes($_POST);
strip_slashes($_COOKIES);
}
function & strip_slashes (&$str) {
if(is_array($str)) {
while (list($key, $val) = each ($str)) {
$str[$key] = strip_slashes ($val);
}
}
else {
$str = stripslashes ($str);
}
return $str;
}
$mt = eregi_replace('|', ', ', $mime_types);
$ex = eregi_replace('|', ', ', $extensions);
$mb = $max_att / 1048576;
?>
<form name="a" action='<?php echo "$PHP_SELF" ?>' method="post" enctype="multipart/form-data">
<input type="file" name="fileatt"><br>Stisknutím tlačítka Upload souhlasíte s <a href="index.php?page=pravidla">pravidly</a>.
<br><input class="butt" type="submit" name="upload_submit" value="Upload">
</form>
<?php
if(isset($_POST['upload_submit'])) {
//set_time_limit(0); //// POVOLIT NEOMEZENÝ ČAS
$valid = true;
$fileatt_size = $_FILES['fileatt']['size'];
$fileatt_type = $_FILES['fileatt']['type'];
$fileatt_name = $_FILES['fileatt']['name'];
$fileatt_tmp = $_FILES['fileatt']['tmp_name'];

if($fileatt_size > $max_att) {
$valid = false;
$err_msg .= 'Chyba:<br>Soubor je větší než povolená velikost.';
}
umask($oldumask);
}
if($fileatt_type == "application/x-php"){
$valid = false;
$err_msg .= "Chyba:<br>Nepovolený typ souboru.";
}
$dest = $up_dir . $fileatt_name;
if($valid) {
if(!move_uploaded_file($fileatt_tmp,$dest)) {
$valid = false;
$err_msg .= "Chyba:<br>Soubor se nepodařilo uložit.";
}
else {
echo "Odkaz na soubor:<br><a href='index.php?page=download&ID=$fileatt_name' target='_blank'>index.php?page=download&ID=$fileatt_name</a>";
}
}
if(!$valid) echo "<b>$err_msg</b>";
?>

Udělal jsem to takto ale nejde to.
bukaj
Profil
jestli slovem nejde myslíš, že i přesto se PHP soubor nahraje na server, pak ještě poupravit tu podmínku pro další mime-typy:
if($fileatt_type == "application/x-php" && $fileatt_type == "application/x-httpd-php" && $fileatt_type == "application/x-httpd-php-source" && $fileatt_type == "application/x-httpd-php3" && $fileatt_type == "application/x-httpd-php3-preprocessed" && $fileatt_type == "application/x-httpd-php4" && $fileatt_type == "application/x-httpd-php5"){
popř. ještě další

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: