Autor | Zpráva | ||
---|---|---|---|
Coompiik Profil |
DarkMeni:
Nene, minotar ti hodí na blbej nick obrázek steeva, koukni: https://minotar.net/avatar/ComuterCZ/100.png Anonyme máš pravdu je to k ničemu, jen sem chtěl pro hráče průkazi Ukončuji toto téma Dík moc DarkMeni za help. |
||
DarkMeni Profil |
#2 · Zasláno: 27. 10. 2013, 20:54:22
Tak zkus na druhej řádek (hned pod <?php...) dopsat:
error_reporting(E_ALL); exit; |
||
Anonymní Profil * |
#3 · Zasláno: 27. 10. 2013, 21:00:11
Coompiik:
„jen sem chtěl pro hráče průkazi“ Já nevím jak přesně to má fungovat, minecraft jsem v životě nehrál a jsem na to hrdý, ale řekl bych že jako u téměř každé jiné hry se dost často mění údaje(takže levely, hodnosti atd..), nehledě na tom, že by si neměl určovat hráč co bude mít na průkazce ale server(to platí hlavně v případě, že si může ke svému statusu napsat, že je admin každý). Takže ano bude zapotřebí nějaké databáze a rozhodně netahat všechny parametry z GET to je cesta do pekel, když už mermomocí chci aby si každý hráč nastavil svojí vizitku podle svého, tak už bych to raději udělal POSTem. Ale to je takový detail.. Takže si stojím za svým, to co ti DarkMeni poslal je jen zbytečně složitý skript, který nakonec bude mít nulové využití |
||
Coompiik Profil |
#4 · Zasláno: 27. 10. 2013, 21:01:04
Ok, dopsal sem to tam, tentokrát tam neni prázdná stránka ale reklama od endory a kam se vypsali ty chyby?
|
||
DarkMeni Profil |
#5 · Zasláno: 27. 10. 2013, 21:27:52
Měly být před tou reklamou, takže buď to žádnou chybu nevygenerovalo nebo povolil si error_reporting(E_ALL)?
Výsledek měl vypadat nějak takto: http://lovci-lamek.4fan.cz/Obrazek/profilovy_obrazek.php?nick=Coompiik&jmeno=Milan&vek=12&funkce=Admin&popis=Popis Coompiik: Anonyme máš pravdu je to k ničemu, jen sem chtěl pro hráče průkazi Ukončuji toto téma Ale když už pochybuješ o tom, k čemu ti to je, tak asi nemá moc smysl řešit proč to nefunguje |
||
Coompiik Profil |
#6 · Zasláno: 27. 10. 2013, 21:33:18
Jop, tu píšu změněný věci:
<?php #profilovy_obrazek.php error_reporting(E_ALL); //Text na vypsání $headers = array( 'Nick', 'Jméno', 'Věk', 'Funkce', 'Popis' a $text_y + $i * ($size + $vertical_tab), //Y souřadnice $color, //Brava $bold_font, //Písmo $text //Text ); } //Odeslání HTTP headeru (řekne prohlížeči že to nebude html stránka, ale PNG obrázek) exit; header('Content-Type: image/png'); //Vykreslení obrázku v PNG formátu imagePNG($image_resource); //Uvolnění paměti s obrázkem imageDestroy($image_resource); imageDestroy($avatar_resource); imageDestroy($background_resource); ?> |
||
Amunak Profil |
DarkMeni:
„Jak to mysliš s tim ošetřováním chyb? Když nějaká z těch obrázkových funkcí vyhodí chybu, tak asi neudělala to, co se po ní chtělo, a pak ani potlačení tý chyby přes @ nepomůže a generování selže tak jako tak.“ Snad každá z těch obrázkových funkcí vrací nějakou hodnotu. Když je to false, obvykle to znamená, že funkce selhala. Je dobré to nějak odchytávat, a v případě že k takové chybě dojde buď úplně zrušit generování obrázku a vypsat chybu s mime typem text, nebo vypsat text chyby do prázdného obrázku a ten poslat na výstup. Potlačování chyb je hloupost, jde o to vědět že, a kde, se stala chyba. „Ale u tý imageCreateFromPNG máš pravu, když někdo zadá blbě nick a minotar žádnej obrázek nevrátí, tak to pak pude třeba ještě přesměrovat na obrázek s textem že avatar nebyl nalezenej nebo tak něco“ Minotar vždycky vrátí výchozí obrázek - hlavu Stevea. Ale ten požadavek by mohl třeba timeoutnout nebo selhat na něčem podobném. Anonymní: „Jediné rozumné využití tohoto skriptu je nějaký "generátor" obrázků - prostě člověk si zadá údaje a vytvoří se mu obrázek a pak si ho následně stáhne do počítače a vloží třeba na fórum jako nějaký podpis(pokud toto chceš, tak to máš hotové).“ A na tom je něco špatného? „Pokud to chceš využít jako nějaký online status(o což se už tady pár lidí snažilo), tak je to nepoužitelné, už jenom z důvodu, že je to pomalé a druhý důvod, že stejnak nějaký status budeš vytahovat z databáze => přepsat minimálně 1/6 zdrojáku co ti DarkMeni v dobré vůli poslal“ Dopsat tam nějaké kešování by bylo otázkou několika málo řádků kódu. |
||
1Pupik1989 Profil |
#8 · Zasláno: 28. 10. 2013, 10:37:14
Vygeneruji obrázek
Uložím obrázek na server Zjistím zda-li obrázek existuje. Pokud neexistuje, vygeneruji ho. Pokud existuje a nenastala výjimka, tak ho načtu. Pokud výjimka nastala, tak ho přegeneruji a uložím. Na načítání to potom skoro nemá vliv, pokud soubor existuje a není potřeba přegenerovat. |
||
Amunak Profil |
#9 · Zasláno: 28. 10. 2013, 10:44:34
1Pupik1989:
Nemáš to prohozené? - přijjmu data od uživatele, vygeneruji z nich unikátní identifikátor - zjistím, jestli existuje obrázek s tím identifikátorem - - pokud ne, obrázek vygeneruji, uložím a zobrazím - - pokud ano, obrázek načtu a zobrazím |
||
DarkMeni Profil |
#10 · Zasláno: 28. 10. 2013, 11:10:38
Coompiik:
Máš v tý samý složce obrázek s pozadim pojmenovaný "background.png"? Jestli ne, tak to možná nefunguje kvůli tomu, ale to by mělo vyvolat tak 20 chyb (jestli to vypisování chyb neni nějak zakázaný v php.ini konfiguraci) Amunak: To by šlo udělat třeba přes: if(!$image_resource || !$background_resource || !$avatar_resource){ //vykresli obrázek s informací o chybě exit; } set_error_handler()
Ale když už se to nějak odladí, tak už by se pak žádna chyba objevit neměla |
||
Amunak Profil |
#11 · Zasláno: 28. 10. 2013, 11:27:57
DarkMeni:
ono ty obrázkové funkce jsou právě docela nevyzpytatelné. Měl jsem takhle skript na generování poměrně komplikovaného grafu (imfografiky), a na ruznych hostinzich se to chovalo různě, a občas mi i nějaká "spolehlivá" funkce selhala z nějakých pochybných důvodů. Je zkrátka lepší to ošetřovat, když nám to PHP umožňuje. |
||
Coompiik Profil |
DarkMeni:
Šlo by se s tebou nějak domluvit že bych ti dal přístup do FTP a ty by ses na to koukl? Teda kdyby mi to prostě už vůbec nešlo. Pozadí mam nastavený správně, background.png tam nemam ale nastavil sem to na img/Pozadi.png |
||
DarkMeni Profil |
#13 · Zasláno: 28. 10. 2013, 12:55:56
Tak můžu se na to kouknout, jestli chceš, můžeš mi to poslat na email darkmeni na seznamu.
|
||
Coompiik Profil |
#14 · Zasláno: 28. 10. 2013, 13:05:08
ok
|
||
DarkMeni Profil |
#15 · Zasláno: 28. 10. 2013, 15:25:55
Už by ti to mělo fungovat. Máš vypnutý vypisování chyb v php.ini (display_errors = 0) - pak se špatně zjišťuje proč něco nefunguje. Nešlo to kvůli tomu, že výpočet odsazení odzhora (do proměnné $y) vracel desetinné číslo - to šlo vyřešit tím, že se to nechá třeba zaokrouhlit dolů / a minotar nevrací obrázek pokaždný - když někdo zadá nick s pomlčkou, tak to vrátí stránku 404 a pak obrázkový funkce selžou (to šlo vyřešit tím, že když getImageSize vrází false nebo velikost avataru nebude 100x100, tak se přepíše adresa na výchozí avatar, který máš někde ve složce)
Jestli ti to už funguje, tak si změň heslo k FTP |
||
Coompiik Profil |
#16 · Zasláno: 28. 10. 2013, 15:45:52
DK MOOOC! FUNGUJE TO! NEVIM JAK SE TI ODVDĚČIT!!! Dolu dam napis že za pomoc děkuju DarkMenimu :-))
|
||
DarkMeni Profil |
#17 · Zasláno: 28. 10. 2013, 16:05:17
V pohodě :D nemusíš
|
||
Coompiik Profil |
#18 · Zasláno: 28. 10. 2013, 16:22:10
Musim, ale nejde to, neukazuje se to tam xDD
Hele funguje <img src="http://coompiik.jecool.net/profilovy_obrazek?<? echo: $nick ?>..."> ??? |
||
DarkMeni Profil |
#19 · Zasláno: 28. 10. 2013, 16:28:51
To je dobrý, nepiš mě tam :D
Jestli to chceš generovat hromadně pro hodně lidí, tak možná rači udělej cache. Jinak tamto můžeš zkusit a uvidíš, ale <img src="profilovy_obrazek?nick=<? echo: $nick ?>..."> ti normálně vykreslí ten obrázek, kde bude jen nick zakončený třema tečkama a nic jinýho tam vyplněnýho nebude (jestli chceš nechat doplnit zbytek podle asociace s nickem, tak to musíš udělat buď přes databázi nebo přes soubor kde budou další informace)
|
||
Coompiik Profil |
#20 · Zasláno: 28. 10. 2013, 16:48:29 · Upravil/a: Moderátor (editace znemožněna) o 25 minut později
Ok... vůbec sem to nepochopil ale skusim mojí verzi. Třema tečkama sem myslel ten zbitek věcí :-))
Hmm, byl sem neuspěšnej... Moderátor Chamurappi: Nepiš prosím tři m za sebou, pokud nemáš důvod volat moderátora.
<head> <meta charset="windows-1250"> <title>Průkaz</title> <link rel="shortcut icon" href="http://www.coompiik.jecool.net/wp-content/themes/brightpage/favicon.ico" /> </head> <body> <img src="profilovy_obrazek?nick=<? echo: $nick ?>&<? echo: $jmeno ?>&<? echo: $vek ?>&<? echo: $funkce ?>&<? echo: $popis ?>"> <p>BBcode(Na fórum, TS...): <code>[img]http://coompiik.jecool.net/profilovy_obrazek.php?<? echo: $nick ?>&<? echo: $jmeno ?>&<? echo: $vek ?>&<? echo: $funkce ?>&<? echo: $popis ?>[/img]</cody> <p>HTML5:<code><img src="http://coompiik.jecool.net/profilovy_obrazek.php?<? echo: $nick ?>&<? echo: $jmeno ?>&<? echo: $vek ?>&<? echo: $funkce ?>&<? echo: $popis ?>"> </body> coompiik.jecool.net/prukaz-generated.php |
||
DarkMeni Profil |
Tipuju to na Syntax Error nebo Fatal Error kterej se ti nevypsal právě kvůli vypnutýmu vypisování chyb. Rači si to zapni - někam do skriptu napiš:
ini_set('display_errors', '1'); a nech ho zpracovat, mělo by to zapnout vypisování chyb (jestli endora neblokuje php.ini nastavení) a pak to z toho skriptu můžeš zase smazat.
Ten Syntax Error bych tipoval kvůli těm dvojtečkám (nemaj tam co dělat): <img src="profilovy_obrazek?nick=<? echo: $nick ?>&<? echo: $jmeno ?>&<? echo: $vek ?>&<? echo: $funkce ?>&<? echo: $popis ?>">
Zkus to třeba nějak takto: <img src='<?php echo "profilovy_obrazek.php?nick=$nick&jmeno=$jmeno&vek=$vek&funkce=$funkce&popis=$popis"; ?>'> |
||
Coompiik Profil |
Hmm, ukazalo se to takhle:
BBcode(Na fórum, TS...): HTML5:<img src="http://coompiik.jecool.net/profilovy_obrazek.php?nick=&jmeno=&vek=&funkce=&popis="> BBcode neni videt protoze to bere jako kod xD |
||
DarkMeni Profil |
#23 · Zasláno: 28. 10. 2013, 17:42:48
Povolil sis zobrazování chyb? V těch proměnných ($nick, $jmeno, $vek, $funkce, $popis) teda asi nemáš nic uloženýho, z čeho je získáváš? Z databáze, session nebo cookies nebo jinak?
|
||
Coompiik Profil |
#24 · Zasláno: 28. 10. 2013, 17:51:01
?
Promiň vůbec se to nevyznám |
||
1Pupik1989 Profil |
#25 · Zasláno: 28. 10. 2013, 18:16:07
Amunak:
„Nemáš to prohozené?“ Spíš jsem to nějak nedopsal. Mělo to být zhruba: Fáze při registraci či aktualizování profilu: 1. Vygeneruji obrázek 2. Uložím obrázek na server Fáze načítání: 1. Zjistím zda-li obrázek existuje. 2. Pokud neexistuje, vygeneruji ho. 3. Pokud existuje a nenastala výjimka, tak ho načtu. 4. Pokud výjimka nastala, tak ho přegeneruji a uložím. Může se stát, že server obrázek nevygeneruje, proto jsou u načítání 1. a 2. bod. Jinak by samozřejmě nebyly ani potřeba. |
||
Coompiik Profil |
#26 · Zasláno: 28. 10. 2013, 18:17:27
1Pupik1989:
To už máme vyřešený teď zjišťujeme problém v img src |
||
DarkMeni Profil |
#27 · Zasláno: 28. 10. 2013, 18:26:09
Coompiik:
1Pupik1989: To už máme vyřešený teď zjišťujeme problém v img src No vlastně ne :D generovat to pokaždý znovu neni moc efektivní (zabere to přibližně 0,3 vteřiny), ale to bys musel mít vyřešený něco jako registraci a práci s databází a pak to nějak cachovat Ty proměnný tam nejspíš nemáš předem definovaný, čeho chceš dosáhnout tím kódem? Co se má vypsat? |
||
1Pupik1989 Profil |
#28 · Zasláno: 28. 10. 2013, 18:33:38
Samozřejmě to potřebuje nějakou databázi, pokud to má být vizitka někde v profilu nebo avatar na fóru v podpisu. Pokud to bude na fóru, tak při načítání to bude ještě horší, protože by se to generovalo pro každý příspěvek x-krát. Pokud to má být jen v profilu, tak zátěž na server bude stále znatelná. Pokud se víc lidí najednou podívá na profil, tak zátěž serveru vylítne jak papiňák. :D
S databází se to hodně zjednoduší. Pak by byl odkaz na obrázek třeba ve tvaru '/image_loader.php?user_id=2'. |
||
Coompiik Profil |
#29 · Zasláno: 28. 10. 2013, 18:35:56
Obrázek se má zobrazit, podtim kód do fóra
|
||
Anonymní Profil * |
#30 · Zasláno: 28. 10. 2013, 18:57:10
DarkMeni:
„zabere to přibližně 0,3 vteřiny“ Opravdu? Co jsem se koukal včera tak to rozhodně nebyly 0,3 vteřiny ,ale spíše tak 2-3 sekundy. To generování obrázků je fakt zbytečně pomalé a mělo by se to dělat minimálně a hlavně pravidelně v nějakých hodinách, kdy na serveru nebude zátěž(takže třeba každý den v 3.00). Nějaké aktualizovanější statistiky bych házel třeba do tabulky, kde generování bude trvat možná 0,0001s, což už je zanedbatelné. Nebo ještě něco a možná efektivnější, sežeň si druhý server běžící buď na Windows + IIS, či na Linux + Tomcat a prostě obrázek generuj pomocí jiné technologie než PHP, protože když se to generuje v PHP podle tebe 0,3 vteřiny tak v .NETu či JSP se to bude dělat 0,001s což je o hodně lepší. 1Pupik1989: „S databází se to hodně zjednoduší“ Zjednoduší ale zpomalí. Pokud bude databáze špatně navrhnuta až znatelně. Coompiik: Můžeš mi vysvětlit k čemu to má vlastně sloužit? A proč se tady kvůli tomu jede taková spamárna? |
||
Téma pokračuje na další straně.
|
0