podmienka if v php

Webdesign, HTML, CSS, Flash, PHP, ASP, .NET, JavaScript. Kritika www stránek na Smetišti.

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod ebeš 19. 5. 2008 09:40

V kóde mám definované
Kód: Vybrat vše
$stahuj = $_GET['stahuj']

v odkaze
Kód: Vybrat vše
<a href="../download.php?stahuj=RZsetup."><b>Stiahni
    Demo </a></b>


chcela by som, aby mi to sťahovalo len subory s príponou exe a rup
Mám podmienku
Kód: Vybrat vše
if (($_GET['stahuj']=$_GET['stahuj'].exe) || ($_GET['stahuj']=$_GET['stahuj'].rup))
{$stahuj = $_GET['stahuj'];}


Ale vidí to len súbory s príponou exe / prípadne rup, keď ho dám ako prvý/
Čo robím zle?
Ďakujem
ebeš
Junior

Odeslat příspěvekod kernel_panic [passed] 19. 5. 2008 09:45

= je špatně, == je nejspíš to, cos zamýšlel
k bití internetovejch nihilistů jsem už příliš starej, ale za ty roky mně narostl krunýř, o kterej se vždy báječně rozplácnete; takže, mám zůstat čelem nebo?
kernel_panic [passed]
Přeborník Živě roku 2008
Uživatelský avatar

Odeslat příspěvekod frutisek 19. 5. 2008 09:48

teda prvni se desim absence zavorek, a potom mi to teda fakt nedava smysl c presne potrebujes, ale udelame priklad na souboru pokus.exe

if ((pokus.exe=pokus.exe.exe) || (pokus.exe=pokus.exe.rup))
{$stahuj = pokus.exe;}

takze me z toho vyplyva ze se to nikdy nemuze uskutecnit ta podminka. Ja osobne bych kdyz uz tak pouzil podminku strpos nebo neco takoveho pro nalezeni vyskytu znaku v retezci. Nejsem si jisty tim prikazem, ale proste najdi si STRxxx a udelej neco v tom a hlavne s uvozovkama

no a to == je druha vec.... kvuli ktere to nejspis nepremava
frutisek
Junior
Uživatelský avatar

Odeslat příspěvekod ebeš 19. 5. 2008 11:25

Ďakujem za rady a pripomienky,
takto to už beží
Kód: Vybrat vše
if (strpos($_GET['stahuj'],'exe') || strpos($_GET['stahuj'],'rup'))
{

$stahuj = $_GET['stahuj'];
}
ebeš
Junior

Odeslat příspěvekod gofry 19. 5. 2008 22:18

Tvoj kód stiahne napríklad aj súbor s názvom ahoj.exe.pdf alebo korupcne-kauzy.xls. Tvoj kód totiž iba kontroluje, či sa vôbec niekde v názve nachádza reťazec exe alebo rup. Ak chceš skutočne sťahovať iba súbory s danými koncovkami, použi regulárny výraz
Kód: Vybrat vše
if(preg_match('/(exe|rup)$/', $_GET['stahuj'])) {

  $stahuj = $_GET['stahuj'];

}
gofry
Junior
Uživatelský avatar

Odeslat příspěvekod droopy 19. 5. 2008 22:49

Programmer 1: We have a problem
Programmer 2: Let's use RegEx!
Programmer 1: Now we have two problems

//btw. "moje-kexe", "hej-rup" ?
droopy
Junior
Uživatelský avatar

Odeslat příspěvekod gofry 19. 5. 2008 23:00

Na to sa dá povedať iba jedno: Programmer 1 je lamer ;-)

riešením "btw" je
Kód: Vybrat vše
... preg_match('/\.(exe|rup)$/', $_GET['stahuj']) ...
Samozrejme to môžeš urobiť aj bez Regexpov, ale bude to riadna prasárna.
gofry
Junior
Uživatelský avatar

Odeslat příspěvekod droopy 19. 5. 2008 23:20

imho neslo o to ci to vies fixnut ;)
pre mna je lamer ten, kto pise broknute regexy (vsetci co pisu regexy) :D

Kód: Vybrat vše
$stahuj_array = explode('.',$_GET['stahuj']);
if (count($stahuj_array) >= 2)
  switch ($stahuj_array[count($stahuj_array) - 1]) {
    case 'exe':
    case 'rup': $stahuj = $_GET['stahuj'];
  }
8)
droopy
Junior
Uživatelský avatar

Odeslat příspěvekod gofry 19. 5. 2008 23:47

Pre mňa je zas lamer ten, kto je schopný prepísať jednoriadkový, úplne jednoducho čitateľný kód do šiestich absolútne nezrozumiteľných riadkov ;-)

Keď už silou mocou nechceš používať regexpy, tak radšej toto:
Kód: Vybrat vše
$koncovky = array('.exe', '.rup');
$koncovka = substr($_GET['stahuj'], -4);

if(in_array($koncovka, $koncovky)) {

  $stahuj = $_GET['stahuj'];

}
gofry
Junior
Uživatelský avatar

Odeslat příspěvekod -b3h- 20. 5. 2008 10:12

Sice nevim co presne predavas promennou stahuj ($_GET["stahuj"]), ale dejme tomu ze nazev souboru s koncovkou (file.exe nebo file.rup), ja bych to udelal takto:

Kód: Vybrat vše
$ereg = ereg("^[a-zA-Z0-9]{1,}\.(exe|rup)$",$_GET["stahuj"]);
if ($ereg) :
   $stahuj = $_GET["stahuj"];
endif;
-b3h-
Junior

Odeslat příspěvekod aacid 20. 5. 2008 12:24

nemalo by fungovat toto?
Kód: Vybrat vše
$suffix = pathinfo($subor, PATHINFO_EXTENSION);
aacid
Junior
Uživatelský avatar


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků