Poradí někdo ?

3 příspěvky

Archiv diskusního fóra

Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.

  1. mam tu zdroják : a nefunguje obrazek_vypis.php: CREATE TABLE `obrazek` ( `id` INT UNSIGNED DEFAULT '0' NOT NULL , `foto` BLOB NOT NULL , `nazev` VARCHAR( 20 ) NOT NULL , `velikost` INT UNSIGNED NOT NULL , `typ` VARCHAR( 20 ) NOT NULL , `sirka` TINYINT UNSIGNED DEFAULT '0' NOT NULL , `vyska` TINYINT UNSIGNED DEFAULT '0' NOT NULL , PRIMARY KEY ( `id` ) ); INSERT INTO `obrazek` ( `id` , `nazev` , `velikost` , `typ` ) VALUES ( '1', '', '0', '' ); $link = mysql_connect("mysql.webzdarma.cz","viperalaurent","viperalaurent","hcq21u"); // předpokládám připojení $pripoj k databázi mySQL obsahující tabulku obrazek // bezpečnostní ošetření předaného parametru $id+=0; // dotaz na databázi $nacti=mysql_query("SELECT foto, velikost, typ, nazev FROM obrazek WHERE id=$id"); if(!$nacti): echo "došlo k poruše v komunikaci s databází"; MySQL_Close($pripoj); die(); endif; $zaznam=mysql_fetch_array($nacti); // načtení údajů z databáze do proměnných $foto=$zaznam["foto"]; $velikost=$zaznam["velikost"]; $typ=$zaznam["typ"]; $nazev=$zaznam["nazev"]; // vytvoření příslušných hlaviček header("Content-type: $typ"); header("Content-length: $velikost"); header("Content-Disposition: attachement; filename=$nazev"); header("Content-Description: PHP Generated Data"); // vypsání binárního textu z pole typu BLOB tabulky obrazek způsobí, že v prohlížeči se tento text zobrazí jako obrázek echo $foto; ---------------------------------------------------------------------- obrazek_upload.php CREATE TABLE `obrazek` ( `id` INT UNSIGNED DEFAULT '0' NOT NULL , `foto` BLOB NOT NULL , `nazev` VARCHAR( 20 ) NOT NULL , `velikost` INT UNSIGNED NOT NULL , `typ` VARCHAR( 20 ) NOT NULL , `sirka` TINYINT UNSIGNED DEFAULT '0' NOT NULL , `vyska` TINYINT UNSIGNED DEFAULT '0' NOT NULL , PRIMARY KEY ( `id` ) ); INSERT INTO `obrazek` ( `id` , `nazev` , `velikost` , `typ` ) VALUES ( '1', '', '0', '' ); $link = mysql_connect("mysql.webzdarma.cz","viperalaurent","viperalaurent","hcq21u"); // předpokládám připojení $pripoj k databázi mySQL obsahující tabulku obrazek // inicializace proměnných + bezpečnostní ošetření proměnné $id if(!isset($id)): $id=0; else: $id+=0; endif; if(!isset($chyba)): $chyba=""; endif; if(isset($action)): // formulář byl odeslán if(trim($HTTP_POST_FILES['binFile']['name'])==""): // musím vybrat nějaký soubor $chyba="vyberte platný soubor"; elseif($HTTP_POST_FILES['binFile']['size']==0): // vybraný soubor musí mít nějakou velikost $chyba="vybraný soubor má nulovou velikost"; elseif($HTTP_POST_FILES['binFile']['size']>30000): // soubor nesmí být větší než 30 000 bytů (POZOR!, element MAX_FILE_SIZE formuláře lze snadno obejít) $chyba="soubor je příliš velký -<br>maxim. velikost nesmí překročit 30 000 bytů"; elseif(!is_uploaded_file($HTTP_POST_FILES['binFile']['tmp_name'])): // zkontroluji, zda zpracovávaný soubor není podvržen (potenciální útočník může zmást skript např. tím, že za nahrávaný soubor bude vydávat soubor již umístěný na serveru) $chyba="přístup odepřen"; endif; if($chyba==""): // vybraný soubor zatím splňuje požadovaná kritéria $typ=strrchr($HTTP_POST_FILES['binFile']['name'], "."); // ze jména souboru zjistím jeho formát if($typ!=".jpg" && $typ!=".png"): // mohu nahrát pouze soubory *.jpg nebo *.png $chyba="můžete použít pouze formát JPEG (JPG) nebo PNG"; else: if($typ==".jpg"): // soubor je formátu *.jpg $typ_file="image/jpeg"; // do tabulky obrazek soubor uložím jako image/jpeg - viz skript obrazek_vypis.php v dalším výpisu $im=imagecreatefromjpeg($HTTP_POST_FILES['binFile']['tmp_name']); // pomocí funkce imagecreatefromjpeg() z knihovny php_gd.dll získám identifikátor obrázku $im if(imagesx($im)>200 || imagesy($im)>200): // pomocí funkcí imagesx() a imagesy() z knihovny php_gd.dll zkontroluji šířku a délku obrázku v pixelech $chyba="obrázek je příliš velký - jeho šířka ani výška nesmí překročit 200 pixelů"; else: // hodnoty udávající skutečnou šířku a výšku obrázku zjištěné pomocí funkcí imagesx() a imagesy() načtu do proměnných $width a $height, které uložím do příslušných polí tabulky obrazek $width=imagesx($im); $height=imagesy($im); endif; imagedestroy($im); // uvolním paměť rezervovanou pro obrázek else: // soubor je formátu *.png, následující příkazy jsou obdobné jako u obrázku formátu *.jpg, jen s tím rozdílem, že do tabulky obrazek soubor uložím jako image/png $typ_file="image/png"; $im=imagecreatefrompng($HTTP_POST_FILES['binFile']['tmp_name']); if(imagesx($im)>200 || imagesy($im)>200): $chyba="obrázek je příliš velký - jeho šířka ani výška nesmí překročit 200 pixelů"; else: $width=imagesx($im); $height=imagesy($im); endif; imagedestroy($im); endif; endif; if($chyba==""): // poslaný soubor splňuje všechna požadovaná kritéria a mohu ho nahrát do tabulky obrazek $binFile=str_replace(";", "", $HTTP_POST_FILES['binFile']['tmp_name']); // v tomto případě poněkud paranoidní bezpečnostní opatření - odstraním všechny možné výskyty ; z nahrávaného souboru $obrazek = addslashes(fread(fopen($binFile, "r"), filesize($binFile))); // soubor načtu jako binární text $aktual = mysql_query("UPDATE obrazek SET foto='$obrazek', nazev='".$HTTP_POST_FILES['binFile']['name']."', velikost=".$HTTP_POST_FILES['binFile']['size'].", typ='$typ_file', vyska=$width, sirka=$height WHERE id=$id"); // do pole foto příslušného záznamu definovaného pomocí proměnné $id tabulky obrazek uložím binární text souboru, do pole nazev jméno souboru, do pole velikost jeho velikost v bytech, do pole typ jeho nadefinovaný typ a do polí sirka a vyska jeho skutečné rozměry v pixelech if($aktual): if(mysql_affected_rows()==1): ?> // aktualizace proběhla v pořádku - mohu provést načtení obrázku zpět do prohlížeče <table border="0" cellpadding="5" cellspacing="0" align="center"> <tr align="center"> <td><br><strong>obrázek byl úspěšně nahrán</strong></td> </tr> <tr align="center"> // vypíši jméno souboru <td>jméno souboru: <? echo $HTTP_POST_FILES['binFile']['name'] ?></td> </tr> <tr align="center"> // vypíši velikost souboru <td>velikost souboru v bytech: <? echo $HTTP_POST_FILES['binFile']['size'] ?></td> </tr> <tr align="center"> // vypíši typ souboru <td>typ souboru: <? echo $typ_file ?></td> </tr> <tr> <td align="center"> // pomocí skriptu obrazek_vypis.php s předaným parametrem id vygeneruji obrázek, ke skriptu obrazek_vypis.php viz dále <img src="obrazek_vypis.php?id=<? echo $id ?>" border="0" width="<? echo $width ?>" height="<? echo $height ?>"> </td> </tr> </table> // link na úvodní formulář <br><div align="center"><a href="obrazek_upload.php">zpět</a></div> // ukončení této větve skriptu </body> <? MySQL_Close($pripoj); die(); else: // poslaný soubor je totožný s již uloženým souborem $chyba="obrázek nebyl aktualizován"; endif; else: // k aktualizaci nedošlo $chyba="porucha v komunikaci s databází - obrázek se nepodařilo nahrát!"; endif; endif; endif; endif; // výpis chybové hlášky if($chyba!=""): ?> <br><br><div align="center"><strong><? echo $chyba ?></strong></div> <? endif; ?> --------------------------------------------------- formulář v html <form name="upload" action="obrazek_upload.php" method="post" enctype="multipart/form-data"> <input type="hidden" name="id" value="<? echo $id ?>"> <input type="hidden" name="MAX_FILE_SIZE" value="30000"> <input type="hidden" name="action" value="true"> <table border="0" cellpadding="6" cellspacing="0" align="center"> <tr> <td colspan="2"> podporovány pouze formáty JPEG/JPG a PNG<br> maxim. povolený rozměr 200x200 pixelů<br>maxim. povolená velikost 30 000 bytů </td> </tr> <tr> <td colspan="2"> <input type="file" name="binFile">    <input type="submit" value="upload"> </td> </tr> </table> </form> hází mi to chybu : Parse error: parse error in /3w/webzdarma.cz/v/viperalaurenti/obrazek_upload.php on line 118
  2. BOže! :-o Přepiš to tak aby to bylo ve formátu if(....){..........} , jinak v tom nikdo p8trat nebude.
  3. bože v php a sql se nevyznam nemáte jinej zdroják ?

← Zpět na všechna témata