Autor | Zpráva | ||
---|---|---|---|
Pavel Straka Profil |
#1 · Zasláno: 28. 2. 2012, 22:46:05 · Upravil/a: Pavel Straka
Dobrý večer, rád bych požádal o radu. Ukládám uživatelem zadaný e-mail jako obrázek, tu a tam (asi tak 1 případ z 5) se ale obrázek neuloží. Bez jakéhokoliv hlášení chyby.
Nemá prosím někdo nápad, co je špatně? if ($_POST[mail] != "") { $sirka = strlen($_POST[mail]) * 10; $obr = imagecreate($sirka, 20); $bg = imagecolorallocate($obr, 255, 255, 255); $barva = imagecolorallocate($obr, 0, 0, 0); imagestring($obr, 3, 0, 0, $_POST[mail], $barva); imagepng($obr,"maily/$id.png",0); } Děkuji. Je možné, že je na hostingu nastaven nějaký limit uložených souborů za čas? |
||
Chro Profil |
#2 · Zasláno: 28. 2. 2012, 23:38:22
Já vidím jedinou chybu: $_POST[mail]. Správně $_POST['mail']. Hoď si zveřejněný kód opravený o mou připomínku do cyklu
for ($id = 1; $id < 51; $id++) { //tvůj kód } |
||
TomasJ Profil |
Pavel Straka:
Já bych použil nahoře u té podmínky toto: if (!empty($_POST[mail])) { Chro: Že tam nemá apostrofy, nebo uvozovky, není chyba, funguje to i bez nich. |
||
Chro Profil |
#4 · Zasláno: 29. 2. 2012, 00:17:07
TomasJ:
Já vím, že v tomto případě nepoužití uvozovek nebo apostrofů nemá vliv na funkčnost. Jen jejich nepoužití prostě považuju za chybu. Tak jako např. netestovat proměnnou na existenci a spoléhat na vypnutí zobrazování chybových hlášení. |
||
Pavel Straka Profil |
Přidal jsem tam ten test: if (!empty($_POST["mail"]), cyklus s 50 opakováními a uložilo se 50 obrázků.
Vymazal jsem je a spustil skript znovu ještě 2x a pokaždé se uložily. Ještě předtím jsem skript ale upravil do této podoby: $sirka = strlen($_POST[mail]) * 10; $obr = imagecreatetruecolor($sirka, 20); $barva = imagecolorallocate($obr, 255,255,255); imagestring($obr, 3, 0, 0, "$_POST[mail]", $barva); imagejpeg($obr,"maily/$i.jpg"); imagedestroy($obr); Takto to funguje. Mohlo to být způsobeno funkcí imagecreate? V manuálu PHP jsem se dočetl, že se doporučuje použití funkce imagecreatetruecolor, ale nedozvěděl jsem se proč. Ve formátu (PNG/JPEG) snad problém není. |
||
Pavel Straka Profil |
#6 · Zasláno: 29. 2. 2012, 02:52:57
Beru zpět, spustil jsem nyní skript 3x po sobě a uložily se jen poslední 2 obrázky.
|
||
Chro Profil |
#7 · Zasláno: 29. 2. 2012, 16:32:32
Imagecreate vytváří obrázek, do kterého můžeš nadefinovat jen 256 základních barev. Pokud není barva základní, převede se na nejblíže základní. Pokud pak použiješ na výstupu např. imagepng, vznikne ti obrázek ve formátu PNG8 (kódování do 8 bitů = 256 barev, menší datová velikost) místo PNG32 (true color, větší datová velikost). Imagecreatetruecolor je tím pádem asi jasné.
S tím skriptem nevím, jednou to jde, pak ne... Mně to na Swebu funguje bez problému. Co máš za hosting? Psal jsi na podporu? |
||
TomasJ Profil |
#8 · Zasláno: 29. 2. 2012, 17:40:16
Pavel Straka:
imagestring($obr, 3, 0, 0, "$_POST[mail]", $barva); Rozdíl mezi truecolor a normálním 256ti barvým vytvořením obrázku nehraje roli při ukládání (až na tu velikost jak píše Chro). Nějak mě nenapadá, proč to blbne. |
||
Pavel Straka Profil |
#9 · Zasláno: 29. 2. 2012, 20:46:54
Chro: Rozumím. Hosting je Forpsi, na podporu jsem ještě nepsal, ale asi mi nic jiného nezbyde.
TomasJ: Vím, že tam uvozovky nemusí být, ale už jsem byl zoufalý a zkoušel všechno možné. Taky mě nic dalšího nenapadá. |
||
Alphard Profil |
#10 · Zasláno: 29. 2. 2012, 21:19:14
Pavel Straka:
„tu a tam (asi tak 1 případ z 5) se ale obrázek neuloží“ Fakt je to náhodné, není v tom žádné pravidlo? „Bez jakéhokoliv hlášení chyby.“ Jiné chyby vidíte, není zakázaný výpis chyb? „Beru zpět, spustil jsem nyní skript 3x po sobě a uložily se jen poslední 2 obrázky.“ Na jiném serveru to funguje správně? Kdyžtak to upravte pro statický test (tj. bez záhadných POST vstupů a dejte to sem). |
||
Pavel Straka Profil |
#11 · Zasláno: 29. 2. 2012, 23:49:27
Alphard: Ne ne, opravdu jsem žádné pravidlo nevypozoroval. Další věc, ktetou jsem zjistil, je, že někdy je to uložení jen zpožděné (třeba 3 minuty), ale někdy se prostě obrázek skutečně neuloží. Výpis chyb je zapnutý, když např. umažu středník, objeví se chybové hlášení. Na jiném serveru jsem ještě neměl možnost vyzkoušet, nepíšu teď ze svého počítače, kde mám uložené přístupové údaje, vyžkouším to během zítřka, každopádně tady je odkaz pro ten statický test: http://www.trznik.cz/obr.php
Mělo by to vypsat odkaz na obrázek, který se měl vytvořit. |
||
Alphard Profil |
#12 · Zasláno: 1. 3. 2012, 00:06:06
Pavel Straka:
„každopádně tady je odkaz pro ten statický test“ Nebudu tady klikat do víkendu a automatizací vám nebudu zatěžoat server, ale ani po několika desítkách pokusů jsem nenašel jediný nefunkční. |
||
Pavel Straka Profil |
#13 · Zasláno: 1. 3. 2012, 00:08:48
Alphard: Samozřejmě, rozumím. A věřím, že jste nenašel ani jeden nefunkční, jak říkám, nevysledoval jsem žádné pravidlo.
|
||
Časová prodleva: 11 let
|
0