Proc to hlasi u php scriptu vetu
Warning: fsockopen() has been disabled for security reasons in
cesky
funkce fsockopen() byla znepristupnena z bezpecnostnich duvodu
To je tady omezeny nebo proc predem dekuji za odpoved
<HTML><i>To je tady omezeny</i><br>
Ano.
<i>nebo proc</i><br>
...byla znepristupnena z bezpecnostnich duvodu...</HTML>
Vetsina lidi tyto funkce pouziva v mistech, kde potreba nejsou a tak ji lze vetsinou uspesne nahradit.
___
A proc? Protoze, kdyz je neco zadarmo, hledi se vide na bezpecnost - tudiz to nemusi to byt srovnatelne s placenou alternativou ;)
Freeze: to vyznívá tak jako kdyby na placených hostinzích na bezpečnost kašlali...
=ds=
Spis jsem to myslel tak, ze za finance jsou ochotni ti v bezpecnosti udelat ustupky.. - taky protoze tady (v pripade fsockopen) nejde imho ani tak o bezpecnost, jako o moznost zneuziti (kdyz je to zadarmo a pristup maji vsichni), coz u placeneho nehrozi ;) (protoze poskytovatel dobre zna sveho zakaznika :))
Dobre tak my vysvetlete jak to udelat jinak ten script aby mi to fungovalo?
Je to celkem dulezite potrebuji rozchodit a vubec nevim jak a nebi mozny to spis na webzdarma povolit?
Jarda: těžko ti někdo poradí když neví s čím, na základě jedné chybové hlášky se poradit nedá - vše, co se ti asi dalo poradit na základě informací, které jsi uvedl už tu nejspíš bylo zmíněno, to vždy záleží na zdrojovém kódu skriptu
A fsockopen ti nikdo, pro tvé modré, nebo jaké oči, nepovolí. Jednou je zakázaný tak na něj prostě zapomeň.
Možná by se ještě dalo poradit změnit skript nebo hosting...
ds, Freeze: -sock- funkce bývají zakázané kvůli spamování a ne kvůli bezpečnosti. Ono je totiž úžasně jednoduché napsat skript simulující odesílání registračního (nebo jakéhokoliv) formuláře a potom ho přilepit k obyčejné stránce a dělat podle návštěvnosti i tisíce registrací, objednávek, atp...
Jarda: "nebi mozny to spis na webzdarma povolit?"
není.
"kdo poradi?" Věšteckou kouli mám v servisu, takže já ne. Dej zdrojáky, potom se třeba někdo najde.
<?php
include('config_radio.php');
$scfp = fsockopen("$scip", $scport, &$errno, &$errstr, 30);
if(!$scfp) {
$scsuccs=1;
echo''.$scdef.' is Offline';
}
if($scsuccs!=1){
fputs($scfp,"GET /admin.cgi?pass=$scpass&mode=viewxml HTTP/1.0\r\nUser-Agent: SHOUTcast Song Status (Mozilla Compatible)\r\n\r\n");
while(!feof($scfp)) {
$page .= fgets($scfp, 1000);
}
######################################################################################################################
/////////////////////////part 1 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//define xml elements
$loop = array("STREAMSTATUS", "BITRATE", "SERVERTITLE", "CURRENTLISTENERS", "MAXLISTENERS", "BITRATE");
$y=0;
while($loop[$y]!=''){
$pageed = ereg_replace(".*<$loop[$y]>", "", $page);
$scphp = strtolower($loop[$y]);
$$scphp = ereg_replace("</$loop[$y]>.*", "", $pageed);
if($loop[$y]==SERVERGENRE || $loop[$y]==SERVERTITLE || $loop[$y]==SONGTITLE || $loop[$y]==SERVERTITLE)
$$scphp = urldecode($$scphp);
// uncomment the next line to see all variables
//echo'$'.$scphp.' = '.$$scphp.'<br>';
$y++;
}
//end intro xml elements
######################################################################################################################
######################################################################################################################
/////////////////////////part 2\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//get song info and history
$pageed = ereg_replace(".*<SONGHISTORY>", "", $page);
$pageed = ereg_replace("<SONGHISTORY>.*", "", $pageed);
$songatime = explode("<SONG>", $pageed);
$r=1;
while($songatime[$r]!=""){
$t=$r-1;
$playedat[$t] = ereg_replace(".*<PLAYEDAT>", "", $songatime[$r]);
$playedat[$t] = ereg_replace("</PLAYEDAT>.*", "", $playedat[$t]);
$song[$t] = ereg_replace(".*<TITLE>", "", $songatime[$r]);
$song[$t] = ereg_replace("</TITLE>.*", "", $song[$t]);
$song[$t] = urldecode($song[$t]);
$dj[$t] = ereg_replace(".*<SERVERTITLE>", "", $page);
$dj[$t] = ereg_replace("</SERVERTITLE>.*", "", $pageed);
$r++;
}
//end song info
fclose($scfp);
}
//display stats
if($streamstatus == "1"){
//you may edit the html below, make sure to keep variable intact
echo'
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<link rel=stylesheet href="styles.css" type="text/css">
<meta http-equiv="refresh" content="5">
<title>'.$scdef.'</title>
</head>
<body text="" bgcolor="">
<p align="center"><center>
<img src="online.jpg"><br>
<b>Radio:</b> '.$servertitle.'<br>
<b>Posluchaci:</b> '.$currentlisteners.' / '.$maxlisteners.'<br>
<b>Bitrate:</b> '.$bitrate.'kbps<br>
<b>Song:</b> '.$song[0].'</p><b>
</p>
</body>
';
}
if($streamstatus == "0")
{
//you may edit the html below, make sure to keep variable intact
echo'
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<link rel=stylesheet href="styles.css" type="text/css">
<meta http-equiv="refresh" content="5">
<title>Radio Server Is Offline</title>
</head>
<body text="" bgcolor="">
<center>
<img src="offline.jpg">
</body>
';
}
?>
tu je zdrojak tak jak na to?dik
Tom: my víme, ale když už to vypisuje to: disabled for security reasons tak bych se v důvodech moc nešťoural. Freeze se prostě špatně vyjádřil a já si rejpnul. Prostě, na v podstatě anonymním serveru je ten zákaz celkem logický
<HTML>Tak celé to tahání se s fsockopen se dá nahradit obyčejným čtením souboru z cizího serveru (to, co posíláte, je HTTP požadavek a přijímáte nějaká data, takže žádný problém) funkcí file_get_contents(). Navíc bych doporučil poohlédnout se po nějakém parseru XML. Patlat to tak, jak to patláte, je příšernost.
A nezapomeňte si povolit allow_url_fopen pomocí souboru .htaccess.</HTML>
Dobry tak mi reknete jak to nahradit a nejlepe to upravte a poslete cele jak to vlozit hm?diks
<HTML>Nechci být zlý, ale když už jste se zapletl s nějakým skriptem, tak byste jej mohl pochopit. Používat PHP skripty bez toho, aniž byste jim rozuměl, je nerozvážné. Až pochopíte, co ten skript dělá, tak pochopíte, jaké náhrady musíte provést. Dejme stranou zpracování dat, předpokládejme, že to funguje. Zbývá nahradit <a href="http://cz2.php.net/fsockopen">fsockopen()</a> a příslušné ify pod tím funkcí <a href="http://cz2.php.net/file_get_contents">file_get_contents()</a> a jinými podobnými ify. Bude vám dělat problém zamyslet se, jaký soubor otevíráte - poohlédněte se po tom, co fputsujete dále v tom skriptu. Všelijaká fputs a fclose zmizí pryč.
Vysvětlování by bylo na dlouho. Domácí úkoly ale za vás neudělám. Nakopl jsem vás víc než dost.</HTML>
Tady někdo psal at jsem pošlu zdrojak že poradí tak jsem poslal.Kdybych si věděl rady tak to udělám a nepišu sem.Je to script co bere data ohledne online radia online songu a aktualni pocet posluchacu ze sevru a ze shoutcastu.A proto nevim jak nahradit fsockopen.
Kdyby to tady bylo povoleno neni co řešit a vše by šlo jak má.
Ale jestli to jde nějak udělat a si schopný poradit budu rád jestli ne tak respektuji.
Jak bylo psáno výše - používat cizí skripty je nebezpečný, mívaj často díry, protože jsou starý a špatně napsaný.
My jsme ti poradili jak to opravit - použít "primitivní" file_get_contents.
Pokud tomu nerozumíš, tak si to nastuduj, tohle je práce na pár okamžiků. Nikdo není povinen dělat práci za tebe. Ty máš problém? Tak se snaž ho nejdřív vyřešit sám a ne čekat že ho někdo vyřeší za tebe.
(Pokračoval bych, ale nechce se mi.)
dalsi chytrej ale sam by to neumel!Tohle miluji kdyz si tak znalej a chytrej tak to udelej sam rikas ze to je otazka par okamziku ja ti rikam ze to neudelas a nerozchodis jinak.Chytraku!
Jarda: Tak to už jsou dva chytráci a ba jich bude i víc. Znám OndraStera a je toho schopný. Já to zvládnu levou zadní, ale teď toho nejsem schopen (marod). Podle toho jak tak jedním okem koukám, tak stačí předělat prvních deset řádků přepisem pro file_get_contents(). Pro inspiraci můžeš použít Nipalův odkaz na manuál, kde je uveden i příklad použití.
=Jarda=
omfg .. z tech lidi, co ti zatim odpovedeli to zvladnou udelat s prehledem vsichni a ani jim to nezabere moc casu. A vím co říkám.
A kdybys nebyl blbej a línej, zvládl bys to taky ..
řešení (prepsani casti s fsockopen() do stavu s file_get_contents())zvládne s manuálem i osmileté dite .. pokud to je pro tebe problém, doporučuji si zopakovat první stupěn základní školy, naučit se trochu anglicky a vrhnout se na na upravu znova ;)
http://cz.php.net/fsockopen
http://cz2.php.net/file_get_contents
je fakt takovy problem pouzit
$page = file_get_contents($scip.'/admin.cgi?pass='.$scpass.'&mode=viewxml'); ?
a tim si vyresis cely problem (pokud nemas navic chyby v casti parsovani xml ..)
___
Nechci soudit tvůj rétorický styl, ale mozna, ze kdybys vsechny neurazel (a netvrdil, ze oni neco nedokazi, kdyz je vubec neznas), dockal by ses urcite lepsiho zachazeni ;) - treba by ti to pak nekdo částečně upravil i podle tvých požadavků.
A jeste jedna poznámka: Kdyz to neumis udelat ty, neznamená to, že to neumí udělat ostatni!
freeze a mohl by si prosim te ten zdrojak co sem poslal upravit aby to slo ja to zkousim uz dva dny a bez vysledku prosim.
Jarda: "Dobry tak mi reknete jak to nahradit a nejlepe to upravte a poslete cele jak to vlozit hm?"
Tohle fórum má jednu zvláštnost, kterou na jiných fórech budeš hledat stěží: místní "ochotníci" jsou svině a "pouze" poradí co a jak - práci za tebe udělají pouze v případě že zaplatíš (jak jistě víš - zadarmo ani kuře nehrabe).
A já nejsem výjimka ;) ale poradím ti trochu jinak:
vem ten tvůj skript- smaž ho a napiš si vlastní:
1) pomocí .htaccess povol načítání vzdálených adres
2) http://php.net/file_get_contents -> načti si požadovaný soubor do proměnné
3) http://manual.wz.cz/download/xml_parser.phps -> dám ti k dispozici mou funkci pro snadné parsování jednoduchých XML na php4.
4) Výsledné pole si naformátuješ do HTML podle svého přání...
takže ti stačí napsat tak 4 řádky a máš hotovo.
Tom dik ale nevyznam se v tom tolik:-((skoda ze nikdo neni ochotny to upravit a napsat kdyz je to otazka par minut.Byl bych za to moc rad
Jsem teď při smyslech.
Připojuji se k Tomovi. A je pravda, že se někdy (skoro většinou) místo očekávané odpověďi dostane pouze návodu. Není to tak, že by za to chtěli zaplatit, i když to taky. Bohužel dnešní trend je takový, a to platí i ve škole, že se k danému problému musíš dokopat sám, než aby ti to polopatě vysvětlovali. Toto je poměrně účinná metoda jak něco zvládnout a naučít.
Teď zpět k tématu.
Metodu kopíruj a vlož snad umíš? ;) Nápověda: Ctrl+C a Ctrl+V.
Tuto část:
$scfp = fsockopen("$scip", $scport, &$errno, &$errstr, 30);
if(!$scfp) {
$scsuccs=1;
echo''.$scdef.' is Offline';
}
if($scsuccs!=1){
fputs($scfp,"GET /admin.cgi?pass=$scpass&mode=viewxml HTTP/1.0\r\nUser-Agent: SHOUTcast Song Status (Mozilla Compatible)\r\n\r\n");
while(!feof($scfp)) {
$page .= fgets($scfp, 1000);
}
Nahraď:
$page = file_get_contents($scip.'/admin.cgi?pass='.$scpass.'&mode=viewxml');
Není to zrovna košér, ale bude to fungovat. Snad. A jestli se zeptáš, abych ti poslal zdroják, tak tě osobně odstřelím.