fopen in script

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Danny

danny

14/01/2008 15:36:00
Quote Anchor link
Hallow allemaal een leuk scriptje gevonden die mijn laaste 10 gespeelde nummer zou moeten laten zien maar ik zit met die fopen snap er niets meer van kan iemand me er mee helpen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<?php

// last10.php -- get and display last n tracks...
// URL syntax:
// last10.php?host=http://213.93.59.2/&port=4663&n={lastN}
//
// {bracketed} items need to be replaced or they will default as below.
//
// I can return Javascript or HTML only.
//

/* keep warnings from our output */

error_reporting(E_ERROR);

// try to get the target from the url...
$host = $_REQUEST[host];
if (!$host) $host = '213.93.59.2'; // adjust as necessary...
$port = $_REQUEST[port];
if (!$port) $port = 4663; // the "default" DNAS PortBase...

$lf = chr(10); // 0x0A [\n]

// The lastN is configurable at the DNAS with, ShowLastSongs= it defaults to 10 and has a maximum of 20

$t_max = $_REQUEST[n];
if (!t_max || $t_max<1 || $t_max>19) $t_max=10;
//19 is the max here because 20=current_track+19

// Return JavaScript or HTML

$jsOutput=FALSE; // TRUE=js | FALSE=HTML

// Let's get /index.html first... to keep this short, there is no code to handle the dnas being down
// or not running, so the script will display nothing in those cases.


$connect_timeout=5;
$success=0;

$fp1 = fsockopen($host, $port, &$errno, &$errstr, $connect_timeout); //open connection
if(!$fp1) { //if this fails, I'm done....
fclose($fp1);
$success++;
}
else {
$request="GET /index.html HTTP/1.1\r\nHost:" . $host . ":" . $port . "\r\nUser-Agent: SHOUTcast DNAS Status [index] * (Mozilla/PHP)\r\nConnection: close\r\n\r\n"; //get index.html
fputs($fp1,$request,strlen($request));
$page='';
while(!feof($fp1)) {
$page .= fread($fp1, 16384);
}

fclose($fp1);

// now I have the entire /index.html in $page -- all I want from here is the current track...
// (hint-hint)


$song00 = ereg_replace("</b></td>.*", "", ereg_replace(".*Current Song: </font></td><td><font class=default><b>", "", $page)); // easy, right <img src="images/smilies/smile.gif" border="0" alt="">

// now let's get /played.html... (this is kinda long)

$fp = fsockopen($host, $port, &$errno, &$errstr, $connect_timeout);
if(!$fp) { //if connection could not be made
fclose($fp);
$success++;

}
else {
$request="GET /played.html HTTP/1.1\r\nHost: " . $host . ":" . $port . "\r\nUser-Agent: SHOUTcast DNAS Status [played] * (Mozilla/PHP)\r\n"."Connection: close\r\n\r\n";
fputs($fp,$request,strlen($request));
$page='';
while (!feof($fp)) {
$page .= fread($fp, 16384);
}

fclose($fp); //close connection
$played_html=$page;

if ($played_html) {
$played_html= ereg_replace('<x>','|-|',ereg_replace('</tr>','',ereg_replace('</td><td>','<x>',ereg_replace('<tr><td>','',ereg_replace('</tr>','</tr>' . $lf,ereg_replace('-->','--]',ereg_replace('<!--','[!--',ereg_replace('</table><br><br>.*','',ereg_replace('.*<b>Current Song</b></td></tr>','',$played_html)))))))));
$xxn=strlen($played_html);
$r=2;
$t_count=0;
$reading=0;
$track[0]=$song00;
while ($r<$xxn & $t_count<=$t_max){
$cur=substr($played_html,$r,1);
if ($cur==$lf) $reading=0;
if ($reading==1) $track[$t_count] .= $cur;
if ($cur=="|" & substr($played_html,$r-1,1)=="-" & substr($played_html,$r-2,1)=="|") {
$reading=1;
$t_count++;
}

$r++;
}
}
}
}


// I now have $track[0-N] containg the current plus last N tracks...
// Output time...


if ($success==0) {

if ($jsOutput) { // JavaScript - used as <script src=...></script>
header('Content-type: text/javascript');
}
else { // HTML... (iFrames anyone?)
echo '<HTML>
<HEAD><TITLE>TITLE OF YOUR PAGE HERE - Now Playing: '
. $track[0] . '</title></head>
<BODY><table width="400" style="border-collapse: collapse" border="2" bordercolor="#660000"><tr bgcolor="#c0c0c0"><td>
<table width="100%" border="0" cellpadding="4"><tr><td>
<font face=Verdana sans-serif size=2>'
;
}


$r=0;
$output_string='';
while ($r<=$t_max){
if ($r==0) $output_string .= 'Now Playing:<br> <b>'.str_replace("'", "'",str_replace('"', '"',$track[$r])).'</b></td></tr></table></td></tr><tr><td><table width="100%" border="0" cellpadding="4"><tr><td><br><font face=Verdana sans-serif size=2><i>Before that you heard:</i><br><br>';
else $output_string .= str_replace("'", "'",str_replace('"', '"',$track[$r])) . '<br>';

$r++;
}


if ($jsOutput) {
echo "document.write('" . $output_string . "');";
}
else {
echo $output_string;
echo '</td></tr></table></td></tr></font></td></tr></table></body></html>';
}

}
else { // I couldn't connect to the DNAS
   if ($jsOutput) echo "document.write('Off Air');";
   else echo "<HTML><HEAD><TITLE>Off-Air</title></head>
<BODY>Server is <b>Off-Air</b>, try again later.</body></html>"
;

}

?>
 
PHP hulp

PHP hulp

05/11/2024 13:27:20
 
Joren de Wit

Joren de Wit

14/01/2008 15:51:00
Quote Anchor link
En wat wil je nu weten? Waar loop je vast, wat gaat er fout, welke foutmelding krijg je?

Kortom, geef eens iets meer informatie.
 
Danny

danny

14/01/2008 15:54:00
Quote Anchor link
zal even de link posten met het probleem. heb hem in de webroot en op een webserver.

a webserver : http://www.jou-site.nl/winamp.php

via webroot : http://213.93.59.2:7000/test.php
Gewijzigd op 01/01/1970 01:00:00 door danny
 
Wondex Wondex

Wondex Wondex

24/12/2010 21:29:47
Quote Anchor link
Let op mensen ! bij regel 44 moet aan het einde van de zin een afsluiting.

Huidige situatie
$page='';

(Nieuwe) Kloppende situatie
$page=''; }
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.