Autor Zpráva
Jakub Šebík
Profil
Dobrý den,
chci se zeptat, jestli je možné "převést" php soubor do javascriptu.
O co jde:
Potřebuji, když se zákazní zaregistruje, dostane js kód, který si umístí na stránku.
Nejdříve jsem to zkoušel s php, ale funkce include() na jiný server nejde.
V tom php kódu jsou jen webové odkazy (je to jaká si reklamní lištička).
Šel by tento js include?
Díky.
Witiko
Profil
Jakub Šebík:
Jediné, co je možné, je načíst si dynamicky generovaný soubor javascriptu:
<script src="http://stranky/soubor.php?bla=bla"></script>


Daný script pak může libovolně manipulovat s dokumentem (přidat lištičku).
Jakub Šebík
Profil
Witiko:
Nefunguje, nic se nezobrazí.
Není ještě jiná možnost?
Keeehi
Profil
Jakub Šebík:
Ale funguje, jenom ty tam máš něco špatně. Živá ukázka by nebyla?
Witiko
Profil
Jakub Šebík:
Předpokládám, že se nesnažíte nahrát místo scriptu surový html kód?
Jakub Šebík
Profil
Keeehi:
Ano, ukázka by byla Zde se má zobrazovat lišta a zde se zaregistrovává web.

Witiko:
Omlouvám se, ale přesně netuším co to znamená.
_es
Profil
Witiko:
Jakub Šebík:
Předpokládám, že se nesnažíte nahrát místo scriptu surový html kód?
Presne o to sa pokúša.

Jakub Šebík:
Značkou <script> nahráš kód JavaScriptu. A ten má prístup k prvkom na stránke, môže ich modifikovať alebo pridávať nové.
Ak neovládaš JS, skús formulovať, čo presne má ten kód robiť, alebo, ak to je zložitejšie, to dať do sekcie „Práce a zakázky“.
Keeehi
Profil
Jakub Šebík:
Ale to je právě ten problém, o kterém psal Witiko. Vy se snažíte místo javascriptu tam dát „surový html kód“. To samozřejmě nepůjde. Navíc, i kdyby jste to spravil, cpe se vám tam ještě reklamní lišta freehostingu. Takže i kdyby jste tu svojí lištu přepsal do JS, stále vám tam bude parazitovat ta reklamní lišta, kvůli které to nejspíše fungovat nebude.
Witiko
Profil
Jakub Šebík:
Tak instruujte uživatele, ať si script tag vloží do tělíčka stránky. Php kód ať navrací: document.write(" ... html kód reklamy ..."); Veškeré " v html kódu nahraďte za '.

Pokud si chcete ohmatat, co to dělá, vložte si následující kód do těla libovolné (x)html stránky:
<script>document.write("<b>Tučný ukázkový text</b>");</script>

A nebo pak jak říká _es je tu také sekce „Práce a zakázky“.
Jakub Šebík
Profil
_es:
Dobře, eště skusím a pokud nepude skusím dát do "Práce a zázraky".
Keeehi:
Skoušel jsem to i na localhostu (xampp) a také nejde, takže myslím, že reklamou to není.
Witiko:
To bude trošku těžké, protože jsem začátečník, mám velice složitý kód na náhodné generování odkazů.
Pokud budete chcít, script dodám, ale dát vše do document.write mi přijde dosti složité.
Děkuji
Witiko
Profil
Jakub Šebík:
Nemělo by, jednoduše na začátek php scriptu přidáte echo "document.write(\""; a na konec echo "\");";. Výsledný generovaný dokument není tak veliký, divil byste se, kolik toho lidé dokážou procpat přes document.write. Délka řetězce v javascriptu je teoreticky omezena jen velikostí RAM. :-)

Druhá možnost je samozřejmě napsat mírně sofistikovanější javascriptový kód a nahrát reklamu do stránky až po jejím načtení. To by nicméně nejspíš vyžadovalo větší modifikace v daném php souboru, nabízím myslím v prvním návrhu tu nejschůdnější cestu.
Jakub Šebík
Profil
Witiko:
Prosím vás, nějak jsem se v tom ztratil. Podívejte se na stránku, a řekněte co kde mám udělat.
Jinak myslím že jsem script na generování odkazu prorval document.write správně.
Oby se to doufám rychleji vyřešilo, dám vám sem zdrojový kód:

Soubor, který to vše vygeneruje:
<style>
.reklamni_listicka
{
margin-top: 7px;
background: black;
color: white;
}

a
{
color: white;
}

a:hover
{
color: red;
}

a:active
{
color: yellow;
}

.text
{
color: yellow;
}
</style>
<div class="reklamni_listicka">
<center>
<font color="yellow"><a href="?#"class="text" >Reklamni listicka:</a></font>
<?php
echo "document.write(\"";
$rander = "19";
?>
<?php
$cislo_radku = rand(0, $rander);
$radek = $cislo_radku; 
$soubor = file('lista_php.php');
echo (isset($soubor[$radek]) ? trim($soubor[$radek]) : 'Odkaz umisten na <em><small>generator 1</small></em> nenalezen');
?>
, 
<?php
$cislo_radku2 = rand(0, $rander);  
$radek2 = $cislo_radku2; 
$soubor2 = file('lista_php.php');
echo (isset($soubor2[$radek2]) ? trim($soubor2[$radek2]) : 'Odkaz umisten na <em><small>generator2</small></em> nenalezen');
?>
, 
<?php
$cislo_radku3 = rand(0, $rander);
$radek3 = $cislo_radku3; 
$soubor3 = file('lista_php.php');
echo (isset($soubor3[$radek3]) ? trim($soubor3[$radek3]) : 'Odkaz umisten na <em><small>generator 3</small></em> nenalezen');
?>
, 
<?php
$cislo_radku4 = rand(0, $rander);
$radek4 = $cislo_radku4; 
$soubor4 = file('lista_php.php');
echo (isset($soubor4[$radek4]) ? trim($soubor4[$radek4]) : 'Odkaz umisten na <em><small>generator 4</small></em> nenalezen');
?>
,  
<?php
$cislo_radku5 = rand(0, $rander);
$radek5 = $cislo_radku5; 
$soubor5 = file('lista_php.php');
echo (isset($soubor5[$radek5]) ? trim($soubor5[$radek5]) : 'Odkaz umisten na <em><small>generator 5</small></em> nenalezen');
?>
, 
<?php
$cislo_radku6 = rand(0, $rander);
$radek6 = $cislo_radku6; 
$soubor6 = file('lista_php.php');
echo (isset($soubor6[$radek6]) ? trim($soubor6[$radek6]) : 'Odkaz umisten na <em><small>generator 6</small></em> nenalezen');
?>
, 
<?php
$cislo_radku7 = rand(0, $rander); 
$radek7 = $cislo_radku7; 
$soubor7 = file('lista_php.php');
echo (isset($soubor7[$radek7]) ? trim($soubor7[$radek7]) : 'Odkaz umisten na <em><small>generator 7</small></em> nenalezen');
echo "\");";
?>
</div>
</center>

_es
Profil
Jakub Šebík:
Metóda document.write slúži na vkladanie textu do HTML kódu v procese načítania stránky. Teda musíš dať do argumentu tej metódy celý text, ktorý sa tam má vložiť, nie odkaz na nejaký súbor.
Jakub Šebík
Profil
_es:
Prosím, mohl by být nějaký příklad?
Děkuji
Witiko
Profil
Jakub Šebík:
Do document.write musíte vecpat veškerý kód včetně definice stylů, které máte nad a pod scriptovanou částí daného souboru. V javascriptovém kódu se žádné tagy nesmí objevit, vše musí být jako textový řetězec uvnitř document.write. Tedy document.write(" vložte na úplný začátek souboru a "); na konec. V celém generovaném kódu se pak nesmí objevit ", proto veškeré " nahraďte za '.

Php script musí vygenerovat následující text:
document.write("<style>.reklamni_listicka{margin-top: 7px;background: black;color: white;}a{color: white;}a:hover{color: red;}a:active{color: yellow;}.text{color: yellow;}</style><div class='reklamni_listicka'>atd. atd.</div></center>");

Všimněte si <div class='reklamni_listicka'> místo <div class="reklamni_listicka">. Skutečně veškeré " v kódu je nutné nahradit buď za \" nebo za ', jinak nám apostrof přeruší řetězec a html kód nám "vyhřezne". :-)
Jakub Šebík
Profil
Witiko:
A co takhle jen zaměnit document.write(""); za document.write('') ?
Takhle by to taky šlo?

Edit: Udělám to jen " za ' protože " je tam miň :)
Jakub Šebík
Profil
Áh Tak konečně jiz všen funguje.
Akorát se mi tam zobrazuje hned vedli lištičky ta funkce document.write.
Zobrazuje se zždy takto? Nebo je to jen někde mnou udělaná chyba?
Děkuji
Witiko
Profil
Jakub Šebík:
Ano, to bude asi přijatelnější možnost. Vlastně jsem si v té liště ani žádných ' nevšimnul. :-)

Akorát se mi tam zobrazuje hned vedli lištičky ta funkce document.write
To by nemělo, pokud jste tam document.write nenapsal omylem 2x, respektive nenechal tam to document.write, které v kódu máte uvedené v tomto příspěvku.
Jakub Šebík
Profil
Witiko:
Ah, ano jsem jelito :-). Zapoměl jsem ho vymazat z echa.
Děkuji za vše v tomto tématu. Moc jste mi pomohl.
_es
Profil
Witiko:
Php script musí vygenerovat následující text
No v tom texte je ešte nutné odstrániť všetky zalomenia riadka, alebo, ak sú vo výslednom kóde potrebné, tak ich nahradiť za \n.
Witiko
Profil
Jakub Šebík:
Není zač. :-)

_es:
No, to by bylo asi taky záhodné. Upravil jsem #15.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

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

0