« 1 2 »
Autor Zpráva
smid83
Profil *
Ahoj muže te mi někdo poradit?potřeboval bych nějaký skript

jak udělat aby se místo př
http://img02.redtubefiles.com/_thumbs/0000172/0172495/0172495_003n.jpg
když obrázek bude chybět se mi místo toho načetl tento skript

("email@seznam.cz", "Test","chyba obrazku","From: <email@seznam.cz>", $_POST["zprava"]);
echo "<p>Dekujeme za odeslání zprávy.</p>\n";
aby se mi to upozornilo na email.Děkuji
Alphard
Profil
Můžete použít get_headers(), získat hlavičky odezvy a kontrolovat ji (200 OK, nebo 404 Not Found). Případně si načíst celý soubor, není velký, aby to byl problém. Zbytek je věc podmínek.

Kontrolu bych spouštěl periodicky na pozadí na cronem.
smid83
Profil *
Děkuji zaradu koukal jsem na to ale vubec nevim jak to mám použít
smid83
Profil *
potřeboval bych spíše nějaký názorný skript v nastránce get_headers() jetoho tolik že nevim co z toho a jak použít
juriad
Profil
http://us3.php.net/manual/en/function.get-headers.php#97684
Vrátí číselný kód stavu: http://en.wikipedia.org/wiki/List_of_HTTP_status_codes
smid83
Profil *
tak to nevim zkoušel jsem třeba z odkazu od jurian z odkazu

<?php
function get_http_response_code($theURL) {
    $headers = get_headers($theURL);
    return substr($headers[0], 9, 3);
}

if(intval(get_http_response_code('filename.jpg')) < 400){
// File exists, huzzah!
}
?>
a pořád se nic neděje tam těch kodu je tak moc že vubec nevím čeho se chytil ,vubec nevim jak to mávypadat abych to mohl vyčíst ale jinak děkuju za snahu
juriad
Profil
Aha, takže ty chceš kontrolovat, zda tvůj soubor existuje? Pak stačí jednoduché:
if(file_exists('filename.jpg')) {
// File exists, huzzah!
}

Pokud chceš kontrolovat existenci cizího souboru, musíš použít funkci get_headers a uvést celou cestu, ne jen nazev.


Toto funguje (alespoň mně):
function get_http_response_code($theURL) {
    $headers = get_headers($theURL);
    return substr($headers[0], 9, 3);
}

echo get_http_response_code('http://img02.redtubefiles.com/_thumbs/0000172/0172495/0172495_003n.jpg'); // vypíše 200
echo "<br>\n";
echo get_http_response_code('http://img02.redtubefiles.com/_thumbs/0000172/0172495/0172495_003x.jpg'); // vypíše 404
smid83
Profil *
vypadá to pěkně ale potřeboval bych spíš když ten soubor fungovat nebude tak aby se to přeplo na jinej
a v tom souboru bych měl automatickou zpravu opozornující na email ,to už umím tady jde jenom oto jak to udělat aby se to přeplo když danej obrázek nebude fungovat
smid83
Profil *
Jde to aby by místo chyby 404 to přesměrovalo někam jinam?
Alphard
Profil
V PHP ne. Šlo by to, kdyby jste měl přístup k nastavení serveru, ale to u cizího nemáte.
Řešením je existenci souboru ověřit před tím, než vygenerujete odkaz. Dělat to za běhu by ale bylo pomalé, takže nejlépe na pozadí v určitých intervalech, jak jsem psal už před týdnem.

Alternativně můžete použít js událost onerror wap.w3schools.com/jsref/event_onerror.asp.
smid83
Profil *
Tak jsem našel asi to to
<script>
function imgError()
{
alert('The image could not be loaded.');
}
</script>


<img src="http://img02.redtubefiles.com/_thumbs/0000172/0172495/0172495_003n.jpg" onerror="imgError()">
fungujeto
Jenže bych potřeboval změnit ten alert('The image could not be loaded.');oby mi okénko nevyskočilo s upozorněním abych misto toho mohl dát toto v php
@mail($email_to, $email_subject, $email_message, $headers);
Chro
Profil
Místo alertu můžeš použít document.write a zavolat php skript přes neviditelný iframe, v němž bude vykonáno zaslání mailu.
document.write('<iframe style="display: none" src="http://...skript.php" width="0" height="0"></iframe>');
smid83
Profil *
diky chtěl jsem to vyřešit takhle fungujeto ale pořád se nechce vypnout načítání když ten obrázek tam neni zobrazí se sice zkouska ale pořád se to načítá na co jsem zapoměl nebo co dělám špatně

<script>
function imgError()
{
document.write('<?php print'zkouska';?>');}
</script>


<img src="http://img02.redtubefiles.com/_thumbs/0000172/0172495/0172495_003n.jpg" onerror="imgError()">

 
Alphard
Profil
1. Nejčastější potíže s PHP (FAQ) » Jak přenést proměnnou z javascriptu do PHP
2. Neděláte nic pro to, aby se načítání zrušilo.
smid83
Profil *
já jsem právě myslel že to bude fungovat takto že to nemuže byt tak složity ale asi jo
<script>
function imgError()
{
document.write('<?php mail("email@seznam.cz", "test", $_POST["zprava"]);?>');}
</script>


<img src="http://img02.redtubefiles.com/_thumbs/0000172/0172495/0172495_003n.jpg" onerror="imgError()">



dalo by se udělat elespon toto?ktoto nejde viz níže


function get_http_response_code($theURL) {
    $headers = get_headers($theURL);
    return substr($headers[0], 9, 3);
}
 
echo get_http_response_code('http://img02.redtubefiles.com/_thumbs/0000172/0172495/0172495_003n.jpg'); // vypíše 200
echo "<br>\n";
echo get_http_response_code('http://img02.redtubefiles.com/_thumbs/0000172/0172495/0172495_003x.jpg'); // vypíše 404

že míst 404 mi to vypíše něco jiného,nebo mě to odkáže jinam?
smid83
Profil *
Tak jsem našel toto ale nevím si rady .aby to správně fungovalo tak ten mojeOkno = window.open('index.php') potřebuju dát dozávorky pod mojeOkno.close()ale když tam jsou spolu tak to nefunguje mužete mi někdo říct čím to je a jak se to dá vyřešit?
<script>
function imgError() {
mojeOkno.close()} 

mojeOkno = window.open('index.php')  
    

 

mojeOkno.document.write('Toto okno se automaticky zavře po uplynutí 9 sekund.')
self.setTimeout('imgError()', 9000)

</script>



tady je zbytek kodu
<img src="http://img02.redtubefiles.com/_thumbs/0000172/0172495/0172495_003n.jpg" onerror="imgError()">
juriad
Profil
Jde to mnohem jednodušeji. Stačí jen změnit src toho obrázku, který nefunguje na adresu tvého PHP skriptu.
kód: http://kod.djpw.cz/met
ukázka: http://kod.djpw.cz/met-
Záměrně neklikatelné: obrázky nejsou vhodné pro děti.

Všimni si v nástrojích pro vývojáře v prohlížeči požadavku na nefunkcni-obrazek.php. V tom PHP skriptu získáš adresu nefunkčního obrázku z $_GET['url']. Následně si můžeš třeba poslat mail nebo cokoli jiného.
smid83
Profil *
juriad:
tomuhle vubec nerozumím jak se stím zachází
juriad
Profil
Ve skriptu nefunkcni-obrazek.php bude to tvé odesílání emailu. Tento skript se „zavolá“, kdykoli některý obrázek na stránce vrátí chybu.
<?php
if(isset($_GET['url'])) {
  @mail("aa@bb.cc", "Nefunkcni obrazek", "Na strance nefunguje obrazek " . $_GET['url'], "From: xx@yy.zz");
}

Doplněna závorka

Co přesně nechápeš?
smid83
Profil *
co dělat stímhle http://kod.djpw.cz/met já tam nechci dávat ručně obrázky nevim vubec jak se stím pracuje,jak to sestavyt
juriad
Profil
To je ukázka, na které jsem ti chtěl demonstrovat, jak to funguje. Prostě do hlavičky stránky přidáš ten čtyřřádkový javascript definující funkci imgError a každému obrázku přídáš atribut onerror.
smid83
Profil *
ja ti asi rozumim
myslíš takto ale jak vewindow.opennastavit ($_GET['url'])aby se neotvírala druhá stránka aby to zustalo na té samé nebo aby se hned pak zavřela
<script>
function imgError()
{

window.open('pica.php?mail=vse')}


</script><?php
endif;
?>
 <img src="http://img02.redtubefiles.com/_thumbs/0000172/0172495/0172495_003n.jpg" onerror="imgError()">
juriad
Profil
Zapomeň na nějaké window.open; udělej to tak, jak jsem napsal. Můžeš to zkopírovat z ukázky, ta funguje.
1) přidat parametr img funkci imgError
2) window.open nahradit za:
img.onerror = undefined;
img.src='pica.php?url=' + encodeURIComponent(img.src);
3) onerror u obrázků rozšíříš o argument this

Toto ti zavolá skript pica.php a parametrem bude obrázek, který se nezobrazil.
smid83
Profil *
tak jsem to udělal takhle jestli jsem tě pochopil ale pořád mi to píše chybnou hlášku na řádku tam kde je if(isset($_GET['url']) {a ten this mám správně?
<script>
function imgError()
{

img.onerror = undefined;
img.src='pica.php?url=' + encodeURIComponent(img.src);}


</script><?php


if(isset($_GET['url']) {
  @mail("aa@bb.cc", "Nefunkcni obrazek", "Na strance nefunguje obrazek " . $_GET['url'], "From: xx@yy.zz");
}
?>
 <img src="http://img02.redtubefiles.com/_thumbs/0000172/0172495/0172495_003n.jpg" onerror="this.imgError()">
Chro
Profil
Chybí ti tam ještě jedna uzavírací závorka. if(isset($_GET['url']))
smid83
Profil *
diky to jsem opravil a dal jsem misto aa@bb.ccsvojí adresu schválně odkaz na chybnej img a nic mi nepřišlo co dělám ještě špatně
juriad
Profil
Máš tam dvě chyby. Za tu chybějící závorku se omlouvám.
function imgError(img)
... onerror="imgError(this)">
smid83
Profil *
Chlapy všem vám moc a moc děkuju hlavně za trpjelivost už to funguje trápil jsem se stím celej měsíc .
Měl bych ještě jednu otázku ono by se to teoreticky dalo použít i na chbné odkazy ale nevím co tam napsat místo img .jinak posílám celej funkční hotovej skript a ještě jednou díky
<script>
function imgError(img)
{

img.onerror = undefined;
img.src='zkouska.php?url=' + encodeURIComponent(img.src);}


</script><?php


if(isset($_GET['url'])) {
  @mail("muj.mail@seznam.cz", "Nefunkcni obrazek", "Na strance nefunguje obrazek " . $_GET['url'], "From: aa@yy.zz");
}
?>
 <img src="http://img02.redtubefiles.com/_thumbs/0000172/0172495/0172495_003n.jpg" onerror="imgError(this)">
Chro
Profil
Zda je odkaz chybný, tzn. vedoucí na neexistující stránku s případným zobrazením chybové hlášky, zjistíš až poté, co na něho klikneš. Řeší se to jinak, viz
ErrorDocument 404
S tím, že v chybovém souboru (klidně s příponou *.php) může být obsažen skript s odesíláním na mail.
smid83
Profil *
ahoj objevil jsem chybu týká se to skriptu ktery jsem psal #28

kolikrát mi to pošle email o chybě obrázku i když ibrázek funguje nevíte čím by to mohlo být?
ukázka funkčního obrázku ktery se mi posílá jako nefunkční <img src="http://et10.xhamster.com/t/250/4_2385250.jpg" onerror="imgError(this)">
« 1 2 »

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: