Някой може ли да го преправи?

Статус
Not open for further replies.

qnkov90

Registered
Здравейте. Имам един файл, с който качвам през едно панелче снимки. Дублирах го и искам сега този код да качва .рар файлове, но нещо не мога да го направя май. Някой може ли да го прегледа и да го преправи и върне? Мерси.

Код:
<? 
session_start(); 

if (isset($_SESSION['potrebitel'])) 
{ 
$potrebitel=$_SESSION['potrebitel']; 
} 
else 
{
header('location:sessionform.php');
exit;
}
?>
<? 
session_start(); 

if (isset($_SESSION['potrebitel'])) 
{ 
$potrebitel=$_SESSION['potrebitel']; 
} 
else 
{
header('location:sessionform.php');
exit;
}
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
	 
	<title> |Отаку България - Контролен панел| </title>
	<link rel="icon" type="image/x-icon" href="http://otaku.bg/panel/img/Oz245Kl.png">
	<link type="text/css" rel="stylesheet" href="style.css">
	<style>
	#box
{
background: #FFFFFF;
width: 600px;
height: 280px;
border: 1px solid #DBDBDB;
	border-radius: 5px;
	-moz-border-radius: 5px;
	-webkit-border-radius: 5px;

}
	</style>
</head>
<body>

<center>

<img src="http://otaku.bg/panel/img/7lODnQ3.png"><p style="font-size:24px;">Контролен панел</p>
<div id="box">
<br><img src="http://otaku.bg/panel/img/mVWcxoA.png"><br><a style="font-size:18px;">Качи субтитри</a><br /><br />
<form action="" method="post"
enctype="multipart/form-data">
<label for="file">Субтитри:</label>
<input type="file" name="file" id="file"><br />
<input type="submit" name="submit" value="Изпрати">
</form>
</div>
</center>
</body>
</html>
<?php
$allowedExts = array("rar");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
$ime = $_FILES["file"]["name"];

if ((($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "rar")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 1048576)
&& in_array($extension, $allowedExts)) {
  if ($_FILES["file"]["error"] > 0) {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
  } else {
    echo "";
    if (file_exists("../subtitles2/" . $_FILES["file"]["name"])) {
      echo $_FILES["file"]["name"] . " already exists. ";
    } else {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "../subtitles2/" . $_FILES["file"]["name"]);
      echo "Субтитрите са качени успешно. <br><a href='$ime'>$ime</a>"; 
    }
  }
}

?>
 
MIME типа за rar файлове е: application/x-rar-compressed или application/octet-stream. Трябва да тестваш, кое от двете приема FILES.

Като цяло кода е много зле, за това няма да си правя труда да обяснявам какво не му е наред.
 
Fakeheal каза:
Защо application/octet-stream?


Принципно това би се върнало за всякакви бинарни файлове, ако не върне x-rar-compressed, което ще изиска и проверка на разширението.

Това, както и да е. Кода е достатъчно чупен.
 
Целта е просто да приема рар, какво му е зле, няма значение. Затова слушам какво трябва да променя и къде, за да стане. Също така, ако може да го направи, когато се качи файл... да изписва и директорията, в която е качен.
 
qnkov90 каза:
Целта е просто да приема рар, какво му е зле, няма значение. Затова слушам какво трябва да променя и къде, за да стане. Също така, ако може да го направи, когато се качи файл... да изписва и директорията, в която е качен.

Ами там, където си написал rar го заменяш с application/x-rar-compressed.
 
Написах нещата ето така, но не иска да качва. Къде бъркам? Ако може да погледнеш и другата ми тема в тоя раздел. Мерси.

Код:
<?php
$allowedExts = array("application/x-rar-compressed");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
$ime = $_FILES["file"]["name"];

if ((($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "application/x-rar-compressed")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 1048576)
&& in_array($extension, $allowedExts)) {
  if ($_FILES["file"]["error"] > 0) {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
  } else {
    echo "";
    if (file_exists("../subtitles2/" . $_FILES["file"]["name"])) {
      echo $_FILES["file"]["name"] . " already exists. ";
    } else {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "../subtitles2/" . $_FILES["file"]["name"]);
      echo "Субтитрите са качени успешно. <br><a href='$ime'>$ime</a>"; 
    }
  }
}

?>
 
http://web-tourist.net/forum/viewtopic.php?t=129948

Можеш да прочетеш тази тема и темата, към която съм дал линк, за да разбереш къде грешиш като цяло.
 
Защо пишеш въобще, като нямаш намерения да помагаш, а само да спамиш?
Ако всички бяхме като теб, доникъде нямаше да стигне тоя свят. Добре, че не съм такъв, когато човек ме пита за нещо.
Няма да ти се моля, ще посетя чужд сайт и пак ще се оправя накрая.
 
qnkov90 каза:
Защо пишеш въобще, като нямаш намерения да помагаш, а само да спамиш?
Ако всички бяхме като теб, доникъде нямаше да стигне тоя свят. Добре, че не съм такъв, когато човек ме пита за нещо.
Няма да ти се моля, ще посетя чужд сайт и пак ще се оправя накрая.

Това, което искаше според мен да каже @Revelation, че вместо да пишеш тема: "някой да ми преправи кода", можеше да напишеш тема, която задава въпрос защо/как и не иска готов код, а знания. Защото ако всички хора бяха като теб, света щеше да е пълен с преправяни морално остарели кодове и никой нямаше да дава смислени отговори със стойностни знания :).

Имайки предвид кода, който си пуснал предполагам не си много наясно с програмирането, защото използвания if е доста объркан. Не мисля, че някой "в тоя свят" ще седне да ти държи ръката по пътя за завършване на твоя сайт, където и да е било.
 
qnkov90 каза:
Защо пишеш въобще, като нямаш намерения да помагаш, а само да спамиш?
Ако всички бяхме като теб, доникъде нямаше да стигне тоя свят. Добре, че не съм такъв, когато човек ме пита за нещо.
Няма да ти се моля, ще посетя чужд сайт и пак ще се оправя накрая.

А ти прочете ли темите, за да разбереш защо няма да получиш отговор?

Когато ти си направиш труда да прочетеш темите, да ги осъзнаеш и да се замислиш какво не е наред, тогава може да си помисля да ти помогна.

Разбиращи или неразбиращи, почти никой вече няма да седне, да ти тества кода и да ти го направи ти както искаш.

Аз лично започнах да давам съвети. За това, което пита ти дадох конкретен отговор, който би трябвало да приключи темата. Така че не можеш да кажеш, че не съм ти помогнал.

Код пиша, когато проблема наистина ме заинтригува и реално искам да намеря решение и да помогна.

П.П. И да не кажеш, че не съм ти помогнал пак:

това, което си добавил в $allowedExts е грешно. if-а ти никога няма да мине, защото не очаква MIME type, а разширението на файла.

П.П.2. Сега да ти кажа защо и кода ти е чупен. Освен, че е дупка до дупка, си го копирал и ти не знаеш от къде и е предназначен за качване на изображения по принцип. Да не говорим, че качването на rar е опасно.
Иначе докато не добавиш rar разширението в масива по-горе, няма да тръгне. Също имай предвид, че ако добавиш само rar в масива $allowedExts, всички проверки за изображенията се обезсмислят.
 
Кода е стар, защото е правен преди повече от 10 години, копиран от тук и преправен от мен. Реално не се занимавам отдавна и нещата са ми греда вече. Просто по някога ми трябват дребни работи да оправям като това. Рядко се случва, но се случва.
 
Започвам да цитирам тогава, да видиш защо трудно получаваш отговори:

Revelation каза:
Другата причина е, че дори въпросите съдържат морално остарял код, което значи, че трябва да седнем и да изведем цяла лекция относно защо не се прави така, как е по-правилно и същевременно да се дадат няколко примера. А това си отнема време.

С времето уроците също остаряха и това придава допълнителна лоша представа за форума, че не се поддържа.
Твоя код очевидно е морално остарял. Никой няма да седне да го преправя специално за теб, защото трябва да се замени целия.

Revelation каза:
Ако дадеше само насоки, се сърдеха. Ако им дадеш код, който не знаят как да използват и видиш ли, не сработел за тях, ти отговарят с "това не работи", т.е. "дай ми нещо, което работи".

И форума беше пълен с такива теми. Внезапно, ние, помагащите започваме да се уморяваме да отговаряме на такива теми и спираме да влизаме във форума за определен период от време, от което следва, че все по-малко хора остават да помагат.
Ето, че аз ти дадох насоки и отговора ти беше "това не работи".

Revelation каза:
също, че масово хората, които идват тук не с реално заинтересовани относно програмиране. Те искат да си направят нещо, не могат, не им се плаща за фирма да им го направи и започват да заливат форума.
Сам си каза, че не си заинтересован от програмиране. Искаш да направиш нещо и идваш да ти оправим кода.

Fakeheal каза:
Пускат се теми, които не търсят решение на изолиран проблем, а по-скоро искат някой да седне и да помисли за тях. Според мен това не е полезно нито за форума, нито за питащия, нито за отговарящия. Мисля, че всички се досещат защо.
Трябваше ние да седнем, за да помислим за теб. Ти дори не обърна внимание на имената на променливите.

Fakeheal каза:
Много често темите, които се отварят са с двусмислено заглавие, а понякога и безмислено /дефиницията ми за безмислено е такова, което не ти подсказва грам какво би съдържала темата/. Това между другото е точка от правилата на самия форум.
Ето, че и точка от правилата, че си нарушил като си пуснал не една, а 2 теми с безсмислено заглавие.

Fakeheal каза:
Според мен това може да се случи, ако насърчаваме хората, които задават въпроси да бъдат по-детайлни, кратки и да пускат само кода, който е релевантен към питането. Кода да е форматиран, проблема добре обяснен (възпроизведим) и заглавието описателно.
Твоя не беше достатъчно детайлен, неформатиран качествено(за HTML, CSS и PHP има различни форматиращи тагове), в темата като цяло нямаше проблем, а изискване с код, който не може да се репликира и както вече казахме, заглавието не беше описателно.
 
Статус
Not open for further replies.

Горе