/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
check på links
Fra : Mickey


Dato : 21-04-01 19:46

jeg er ved at lave en "free for all" linkside - altså en hvor man kan skrive
sit link ind selv.

- hvor meget skal man checke på et link ?


--
|-|$235-|)k - Mickey
http://www.susie.dk
mickey(at)susie.dk



 
 
Søren Boll Overgaard (21-04-2001)
Kommentar
Fra : Søren Boll Overgaard


Dato : 21-04-01 21:51

On Sat, 21 Apr 2001 20:45:36 +0200, Mickey wrote:
> jeg er ved at lave en "free for all" linkside - altså en hvor man kan skrive
> sit link ind selv.
>
> - hvor meget skal man checke på et link ?

Det letteste er at checke om linket er validt med f.ex.:
if (fopen($link)) { // indsæt linket i databasen }

--
Søren O.

If idiots could fly, IRC would be an airport

Mickey (21-04-2001)
Kommentar
Fra : Mickey


Dato : 21-04-01 22:18

"Søren Boll Overgaard" <boll@fw1.dk> skrev i en meddelelse
news:slrn9e3slj.1tjt.boll@treebeard.tolkien.dk...
> On Sat, 21 Apr 2001 20:45:36 +0200, Mickey wrote:
> > jeg er ved at lave en "free for all" linkside - altså en hvor man kan
skrive
> > sit link ind selv.
> >
> > - hvor meget skal man checke på et link ?
>
> Det letteste er at checke om linket er validt med f.ex.:
> if (fopen($link)) { // indsæt linket i databasen }

og det checker altså om den får en 404 eller hva ?

- er der andet der skal checkes, jeg checker allerede om der er http://
foran osv...

--
|-|$235-|)k - Mickey
add your link at http://susie.dk/en/links
http://www.susie.dk - mickey(at)susie.dk



Søren Boll Overgaard (21-04-2001)
Kommentar
Fra : Søren Boll Overgaard


Dato : 21-04-01 22:26

On Sat, 21 Apr 2001 23:17:46 +0200, Mickey wrote:

>> Det letteste er at checke om linket er validt med f.ex.:
>> if (fopen($link)) { // indsæt linket i databasen }
>
> og det checker altså om den får en 404 eller hva ?

Nej. fopen returnerer false hvis den ikke kan åbne filen, hvilket i det her
tilfælde vil betyde at hvis ikke url'en er vaild, og fopen dermed ikke får
en relevant statuskode tilbage, så fejler checket, og du ved at url'en ikke
findes.

> - er der andet der skal checkes, jeg checker allerede om der er http://
> foran osv...

Det behøver du principielt ikke hvis du checker med fopen. Du kan dog lave
en lille dims der automagisk prepender http:// hvis det ikke allerede
findes.


--
Søren O.

Bedøm din edbforhandler på http://edbforhandlere.dk/

Søren Boll Overgaard (21-04-2001)
Kommentar
Fra : Søren Boll Overgaard


Dato : 21-04-01 22:30

On 21 Apr 2001 21:26:01 GMT, Søren Boll Overgaard wrote:
> On Sat, 21 Apr 2001 23:17:46 +0200, Mickey wrote:
>
>>> Det letteste er at checke om linket er validt med f.ex.:
>>> if (fopen($link)) { // indsæt linket i databasen }
>>
>> og det checker altså om den får en 404 eller hva ?
>
> Nej. fopen returnerer false hvis den ikke kan åbne filen, hvilket i det her
> tilfælde vil betyde at hvis ikke url'en er vaild, og fopen dermed ikke får
> en relevant statuskode tilbage, så fejler checket, og du ved at url'en ikke
> findes.
>
>> - er der andet der skal checkes, jeg checker allerede om der er http://
>> foran osv...
>
> Det behøver du principielt ikke hvis du checker med fopen. Du kan dog lave
> en lille dims der automagisk prepender http:// hvis det ikke allerede
> findes.

Der er iøvrigt syntaksfejl i mit eksempel. Det skulle naturligvis have
været:

if (fopen ($link, "r")) { // Hurra, hurra }

--
Søren O.

Bedøm din edbforhandler på http://edbforhandlere.dk/

Jonas Koch Bentzen (21-04-2001)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 21-04-01 22:34

Søren Boll Overgaard skrev:

> Der er iøvrigt syntaksfejl i mit eksempel. Det skulle naturligvis have
> været:
>
> if (fopen ($link, "r")) { // Hurra, hurra }

Der burde vel også være snabel-a foran fopen, sådan at scriptet ikke
dør, hvis linket ikke kan åbnes...?

--
Venlig hilsen
Jonas Koch Bentzen

Mickey (21-04-2001)
Kommentar
Fra : Mickey


Dato : 21-04-01 22:35

"Jonas Koch Bentzen" <ingen.epostadresse@eksempel.dk> skrev i en meddelelse
news:9bsubj$30nb$1@news.cybercity.dk...
> Søren Boll Overgaard skrev:
>
> > Der er iøvrigt syntaksfejl i mit eksempel. Det skulle naturligvis have
> > været:
> >
> > if (fopen ($link, "r")) { // Hurra, hurra }
>
> Der burde vel også være snabel-a foran fopen, sådan at scriptet ikke
> dør, hvis linket ikke kan åbnes...?

lyder som en udemærket ide - men virker det så efter hensigten ?


--
|-|$235-|)k - Mickey
add your link at http://susie.dk/en/links
http://www.susie.dk - mickey(at)susie.dk



Søren Boll Overgaard (21-04-2001)
Kommentar
Fra : Søren Boll Overgaard


Dato : 21-04-01 22:47

On Sat, 21 Apr 2001 23:35:14 +0200, Mickey wrote:

>> > Der er iøvrigt syntaksfejl i mit eksempel. Det skulle naturligvis have
>> > været:
>> >
>> > if (fopen ($link, "r")) { // Hurra, hurra }
>>
>> Der burde vel også være snabel-a foran fopen, sådan at scriptet ikke
>> dør, hvis linket ikke kan åbnes...?
>
> lyder som en udemærket ide - men virker det så efter hensigten ?

Ja. Og ja, et snabela vil sikkert være en god ide.

--
Søren O.

There are no stupid questions, only inquisitive idiots

Mickey (21-04-2001)
Kommentar
Fra : Mickey


Dato : 21-04-01 22:50

"Søren Boll Overgaard" <boll@fw1.dk> skrev i en meddelelse
news:slrn9e3vug.1tjt.boll@treebeard.tolkien.dk...
> On Sat, 21 Apr 2001 23:35:14 +0200, Mickey wrote:
>
> >> > Der er iøvrigt syntaksfejl i mit eksempel. Det skulle naturligvis
have
> >> > været:
> >> >
> >> > if (fopen ($link, "r")) { // Hurra, hurra }
> >>
> >> Der burde vel også være snabel-a foran fopen, sådan at scriptet ikke
> >> dør, hvis linket ikke kan åbnes...?
> >
> > lyder som en udemærket ide - men virker det så efter hensigten ?
>
> Ja. Og ja, et snabela vil sikkert være en god ide.

men det løser ikke mit problem med "bad file descriptor" ?


--
|-|$235-|)k - Mickey
add your link at http://susie.dk/en/links
http://www.susie.dk - mickey(at)susie.dk



Mickey (21-04-2001)
Kommentar
Fra : Mickey


Dato : 21-04-01 22:31

"Søren Boll Overgaard" <boll@fw1.dk> skrev i en meddelelse
news:slrn9e3un9.1tjt.boll@treebeard.tolkien.dk...
> On Sat, 21 Apr 2001 23:17:46 +0200, Mickey wrote:
>
> >> Det letteste er at checke om linket er validt med f.ex.:
> >> if (fopen($link)) { // indsæt linket i databasen }
> >
> > og det checker altså om den får en 404 eller hva ?
>
> Nej. fopen returnerer false hvis den ikke kan åbne filen, hvilket i det
her
> tilfælde vil betyde at hvis ikke url'en er vaild, og fopen dermed ikke får
> en relevant statuskode tilbage, så fejler checket, og du ved at url'en
ikke
> findes.

jeg får den her:
Warning: fopen("http://www.notexisting.dk/","r") - Bad file descriptor
på både
if (fopen("$url/", "r")) {
og
if (fopen("$url", "r")) {

>
> > - er der andet der skal checkes, jeg checker allerede om der er http://
> > foran osv...
>
> Det behøver du principielt ikke hvis du checker med fopen. Du kan dog lave
> en lille dims der automagisk prepender http:// hvis det ikke allerede
> findes.

det er også det den laver - kigger om der er http:// på, ellers sætter den
det på! (og der er muligheder for https, hTTp osv..)


--
|-|$235-|)k - Mickey
add your link at http://susie.dk/en/links
http://www.susie.dk - mickey(at)susie.dk



Peter Brodersen (22-04-2001)
Kommentar
Fra : Peter Brodersen


Dato : 22-04-01 00:12

On 21 Apr 2001 21:26:01 GMT, boll@fw1.dk (Søren Boll Overgaard) wrote:

>> og det checker altså om den får en 404 eller hva ?
>Nej. fopen returnerer false hvis den ikke kan åbne filen, hvilket i det her
>tilfælde vil betyde at hvis ikke url'en er vaild, og fopen dermed ikke får
>en relevant statuskode tilbage, så fejler checket, og du ved at url'en ikke
>findes.

fopen vil også returnere false ved en 404'er, når man bruger eksterne
URL's.

http://stock.ter.dk/hentfil.php


--
- Pede
Professionel nørd

Michael Jack (23-04-2001)
Kommentar
Fra : Michael Jack


Dato : 23-04-01 13:32

Søren Boll Overgaard <boll@fw1.dk> wrote:

> Nej. fopen returnerer false hvis den ikke kan åbne filen, hvilket i det her
> tilfælde vil betyde at hvis ikke url'en er vaild, og fopen dermed ikke får
> en relevant statuskode tilbage, så fejler checket, og du ved at url'en ikke
> findes.

Hvornår/dan timer fopen() ud? Kan det sættes i scriptet?

Eksempel:

Hvis siden svarer inden x sek. vil jeg gerne includere siden. Ellers vil
jeg vise noge lokalt i stedet.

Om siden svarer "hurtigt nok" vil bl.a. afhænge af belastning på
serveren hvor siden befinder sig, I guess? Manuale siger bare:

"If the open fails, the function returns false."

Mvh. Michael

Søren Boll Overgaard (23-04-2001)
Kommentar
Fra : Søren Boll Overgaard


Dato : 23-04-01 15:52

On Mon, 23 Apr 2001 14:31:58 +0200, Michael Jack wrote:

Hej

> Hvornår/dan timer fopen() ud? Kan det sættes i scriptet?

Der slår du hovedet på sømmet. Der ikke umiddelbart en måde at styre timeout
på, hvilket potentielt giver problemer. Jeg har ikke funden en måde at
håndtere det på.



--
Søren O.

Bedøm din edbforhandler på http://edbforhandlere.dk/

Jonas Koch Bentzen (23-04-2001)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 23-04-01 16:55

Søren Boll Overgaard skrev:

> On Mon, 23 Apr 2001 14:31:58 +0200, Michael Jack wrote:
>
>> Hvornår/dan timer fopen() ud? Kan det sættes i scriptet?
>
> Der slår du hovedet på sømmet. Der ikke umiddelbart en måde at styre
> timeout på

Nej, men så kunne han jo bruge fsockopen i stedet for, hvilket giver
mulighed for timeout. Det er godt nok mere besværligt, men det er en
mulighed.

--
Venlig hilsen
Jonas Koch Bentzen

Michael Jack (23-04-2001)
Kommentar
Fra : Michael Jack


Dato : 23-04-01 18:09

Jonas Koch Bentzen <ingen.epostadresse@eksempel.dk> wrote:

> Nej, men så kunne han jo bruge fsockopen i stedet for, hvilket giver
> mulighed for timeout. Det er godt nok mere besværligt, men det er en
> mulighed.

Har I prøvet apache_lookup_uri()?

Den returnerer angiveligt bl.a. værdien request_time.

Jeg er kun interesseret i URL'er af typen HTTP, og PHP er installeret
som modul, så den burde kunne bruges.

Mvh. Michael

Thomas L. Kjeldsen (23-04-2001)
Kommentar
Fra : Thomas L. Kjeldsen


Dato : 23-04-01 18:44

Søren Boll Overgaard wrote:
>> Hvornår/dan timer fopen() ud? Kan det sættes i scriptet?
>
> Der slår du hovedet på sømmet. Der ikke umiddelbart en måde at styre timeout
> på, hvilket potentielt giver problemer. Jeg har ikke funden en måde at
> håndtere det på.

Måske kan du bruge den endnu udokumenterede "select" funktion:
http://lxr.php.net/source/php4/ext/sockets/sockets.c#399

/tlk

Anders Johannsen (23-04-2001)
Kommentar
Fra : Anders Johannsen


Dato : 23-04-01 10:38

> Det letteste er at checke om linket er validt med f.ex.:
> if (fopen($link)) { // indsæt linket i databasen }

Der er to downsides ved den løsning:

1) Hvis linket findes, vil forbindelsen ikke blive lukket
2) fopen() virker også på f.eks. file:// adresser, hvilket kunne være
potentielt skadeligt

/A



Søren Boll Overgaard (23-04-2001)
Kommentar
Fra : Søren Boll Overgaard


Dato : 23-04-01 12:15

On Mon, 23 Apr 2001 11:38:19 +0200, Anders Johannsen wrote:
>> Det letteste er at checke om linket er validt med f.ex.:
>> if (fopen($link)) { // indsæt linket i databasen }
>
> Der er to downsides ved den løsning:
>
> 1) Hvis linket findes, vil forbindelsen ikke blive lukket

fclose?

> 2) fopen() virker også på f.eks. file:// adresser, hvilket kunne være
> potentielt skadeligt

Ja, men det at åbne en fil kan næppe betegnes som en stor risiko. Specielt
ikke idet den åbnes read-only, og lukkes umiddelbart efter.

--
Søren O.

If idiots could fly, IRC would be an airport

Anders Johannsen (23-04-2001)
Kommentar
Fra : Anders Johannsen


Dato : 23-04-01 12:34

> > 1) Hvis linket findes, vil forbindelsen ikke blive lukket
>
> fclose?

Ja ... men med

>> if (fopen($link)) { // indsæt linket i databasen }

har du ikke nogen reference til den filpointer der skal lukkes.

if ($fp = @fopen($link))

fclose($fp);
// indsæt linket i databasen
}

gør derimod tricket.

> > 2) fopen() virker også på f.eks. file:// adresser, hvilket kunne være
> > potentielt skadeligt
>
> Ja, men det at åbne en fil kan næppe betegnes som en stor risiko. Specielt
> ikke idet den åbnes read-only, og lukkes umiddelbart efter.

Medgivet: det er en mindre ting.

/A



Søren Boll Overgaard (23-04-2001)
Kommentar
Fra : Søren Boll Overgaard


Dato : 23-04-01 13:10

On Mon, 23 Apr 2001 13:34:03 +0200, Anders Johannsen wrote:
>> > 1) Hvis linket findes, vil forbindelsen ikke blive lukket
>>
>> fclose?
>
> Ja ... men med
>
> >> if (fopen($link)) { // indsæt linket i databasen }
>
> har du ikke nogen reference til den filpointer der skal lukkes.
>
> if ($fp = @fopen($link))
>
> fclose($fp);
> // indsæt linket i databasen
> }
>
> gør derimod tricket.

Bagatel, der giver sig selv.
Iøvrigt er dit eksempel defekt, gæt selv hvor der mangler en {.

:)

--
Søren O.

There are no stupid questions, only inquisitive idiots

Anders Johannsen (23-04-2001)
Kommentar
Fra : Anders Johannsen


Dato : 23-04-01 13:16

> Iøvrigt er dit eksempel defekt, gæt selv hvor der mangler en {.

Bagatel, der giver sig selv.




Christian Jørgensen (22-04-2001)
Kommentar
Fra : Christian Jørgensen


Dato : 22-04-01 08:28

Mickey <news002@susie.dk> wrote:

>jeg er ved at lave en "free for all" linkside - altså en hvor
>man kan skrive sit link ind selv.

Jeg skrev engang flg:

function check_link($url) {
$url_array = parse_url($url);
if (!$parse_url["path"]) $parse_url["path"] = "/";
@$fs = fsockopen($url_array["host"],80);
if ($fs) {
fputs($fs,"GET ".$url_array["path"]." HTTP/1.1\n");
fputs($fs,"Host: ".$url_array["host"]."\n");
fputs($fs,"Connection: close\n\r\n");
return !eregi("^http\/[0-9]\.[0-9] 404", fgets($fs,1024));
}
}

Måske man skulle smide en timeout-ting på fsockopen

--
Christian Jørgensen
http://www.razor.dk

"Uden cola og hikke - Duer helten ikke!"

Søg
Reklame
Statistik
Spørgsmål : 177556
Tips : 31968
Nyheder : 719565
Indlæg : 6408866
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste