Avatar billede xbobby Nybegynder
23. juni 2003 - 11:02 Der er 22 kommentarer og
1 løsning

Tjekke om et domæne kan bruge php

Hej med jer.

Det jeg har brug er en stump kode, som gør at jeg kan tjekke et domæne om det kan bruge php.

Jeg forstiller mig et input felt hvor jeg kan indtatse hele adressen http bla bla og så trykke på en knap og så får jeg enten meddelelsen kan bruge PHP eller kan ikke bruge PHP.

Hvad siger eksperterne?

Mon ikke det er muligt?


vh xbobby
Avatar billede phpgris Nybegynder
23. juni 2003 - 11:04 #1
Du mener en helt vilkårlig adresse som f.eks. www.dr.dk?
Avatar billede Slettet bruger
23. juni 2003 - 11:05 #2
Det kan være besværligt, da mange webhoteller bruger en forskellige standard, og derudover bruger forskellige database fortolkere.

Så selvom webhotellet tillader php, er det ikke sikkert at du kan bruge et færdigt script du har lavet, uden rettelser.

En anden måde du kan gøre det på er, at lave et whois opslag på f.eks:
http://www.ripe.net/db/whois/whois.html

og finde webhotellet, og gå ind på deres website, og se hvad de tilbyder af php services.
Avatar billede Slettet bruger
23. juni 2003 - 11:06 #3
Ens stavekundskaber er aldrig helt på toppen her om morgenen...
Avatar billede exp Juniormester
23. juni 2003 - 11:09 #4
Avatar billede phpgris Nybegynder
23. juni 2003 - 11:19 #5
pacr00n >>
Hmm. En forskellig standard? Forskellige databasefortolkere? Hvad mener du og hvad har det med spørgsmålet at gøre?
Avatar billede phpgris Nybegynder
23. juni 2003 - 11:54 #6
xbobby >>
Jeg har bikset et lille script der gør hvad jeg tror du spørger om. Metoden er ikke hundrede procent skudsikker men en hurtig test giver:

www.dr.dk kører ikke PHP
www.tv2.dk kører PHP

Skriv lige tilbage hvis det er det du har brug for.
Avatar billede Slettet bruger
23. juni 2003 - 11:58 #7
phpgris:

Jeg mener at der findes forskellige php standarder? Eller måske skulle jeg sige versioner. Jeg mener vi er oppe på 4.3.2 atm.

Med databasefortolkere mener jeg, at nogle webhoteller måske tillader at du henter data fra en access database, mens andre kræver det gøres fra en mySQL.

Så det har da temmelig meget med spørgsmålet at gøre?
Avatar billede phpgris Nybegynder
23. juni 2003 - 12:04 #8
pacr00n >>
Måske er det mig der misforstår hvad han spørger om men umiddelbart syntes jeg hverken han beder om PHP-version eller databasefortolkere? Hvordan mener du at det har nogen relevans for spørgsmålet?

(Ikke for at provokere, undersøger bare om jeg har misforstået spørgsmålet)
Avatar billede Slettet bruger
23. juni 2003 - 17:33 #9
Jeg skrev det i forbindelse med at han vel nok skal bruge den viden til noget, som han vil have vha det script.

Så jeg skrev jo også, at hvis han havde et færdigt php script på en side, og han vil overføre siden til et andet webhotel, så pointerede jeg bare at han ikke nødvendigvis kan direkte overføre det script han havde...
Avatar billede phpgris Nybegynder
23. juni 2003 - 17:51 #10
Så undrer det mig bare at du skrev det som et svar når det nu ikke var det han spurgte om - men nevermind.
Avatar billede xbobby Nybegynder
24. juni 2003 - 10:31 #11
Til phpgris
Jo det er et lille script jeg søger, som kan tjekke om et "vilkårligt" domæne kan bruge PHP hverken mere eller mindre, så ligger du inde med sådan som jeg kan bruge, så er de 60 point dine!

Selvfølgelig er det ikke 100% sikkert - hvad er det forøvrigt - inden for denne brance?

Til pacr00n
Du har sikkert ret noget af det du skriver, men jeg vil stadig have det som jeg startede med at ytre ønske om - også selv om det ikke er 100% sikkert og mit ønske var:

Jeg forstiller mig et input felt hvor jeg kan indtaste hele adressen http bla bla og så trykke på en knap og så får jeg enten meddelelsen kan bruge PHP eller kan ikke bruge PHP.

xbobby :-)
Avatar billede phpgris Nybegynder
24. juni 2003 - 18:36 #12
<?php
$host = $_GET["host"];

$fp = fsockopen($host, 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br>\n";
} else {
    fputs($fp, "HEAD / HTTP/1.1\r\nHost: $host\r\n\r\n");
    while (!feof($fp) and strpos($response, "\r\n\r\n")===FALSE) {
        $response = $response . fgets($fp,128);
    }
    fclose ($fp);

    $response = explode("\r\n", $response);
    foreach ($response as $line) {
        if (substr($line, 0, 7) == "Server:") {
            if (strpos($line, "PHP")) {
                $php = TRUE;
            }
        }
    }

    if ($php) {
        echo "$host kører PHP";
    } else {
        echo "$host kører ikke PHP";
    }
}

?>
Avatar billede phpgris Nybegynder
24. juni 2003 - 18:44 #13
Scriptet udnytter at mange servere med PHP skriver versionsinformation for PHP i HTTP-headeren "Server". Nogle serveradministratorer har slået denne feature fra fordi hackere på den måde kan se hvilke angreb serveren er åben for men på dem jeg har prøvet fungerer det fint. Prøv f.eks. at kalde scriptet med testphp.php?host=www.tv2.dk
Avatar billede xbobby Nybegynder
24. juni 2003 - 19:54 #14
Jeg har nu prøvet det og får to fejlmeddelelser:

Notice: Undefined variable: response in c:\inetpub\wwwroot\quiz\testphp.php on line 15

Notice: Undefined variable: response in c:\inetpub\wwwroot\quiz\testphp.php on line 16
www.tv2.dk kører PHP


Linje 15 er lige med denne kode:
while (!feof($fp) and strpos($response, "\r\n\r\n")===FALSE) {

Linje 16 er lige med denne kode:
$response = $response . fgets($fp,128);

Hvad er der galt phpgris?
Avatar billede phpgris Nybegynder
24. juni 2003 - 20:03 #15
Det er ikke en fejl som sådan, bare en advarsel om at $response ikke er defineret første gang while-løkken køres igennem.

For at rette det skal du enten ændre din error reporting level i php.ini eller sætte $response = "" i begyndelsen af scriptet:
Avatar billede phpgris Nybegynder
24. juni 2003 - 20:03 #16
<?php
$host = $_GET["host"];
$response = "";

$fp = fsockopen($host, 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br>\n";
} else {
    fputs($fp, "HEAD / HTTP/1.1\r\nHost: $host\r\n\r\n");
    while (!feof($fp) and strpos($response, "\r\n\r\n")===FALSE) {
        $response = $response . fgets($fp,128);
    }
    fclose ($fp);

    $response = explode("\r\n", $response);
    foreach ($response as $line) {
        if (substr($line, 0, 7) == "Server:") {
            if (strpos($line, "PHP")) {
                $php = TRUE;
            }
        }
    }

    if ($php) {
        echo "$host kører PHP";
    } else {
        echo "$host kører ikke PHP";
    }
}

?>
Avatar billede phpgris Nybegynder
24. juni 2003 - 20:05 #17
Jeg vil dog anbefale at du slår det fra i php.ini for at undgå den slags fejl i fremtiden.
Avatar billede xbobby Nybegynder
24. juni 2003 - 21:39 #18
Det fungerer fint

To spørgsmål her på falderebet
Hvad er det helt konkret der skal ændres inde i min php.ini, du skriver at der er min error reporting level, hvad skal den så sættes til?

Hvis modtageren ikke bruger php, men har en server der kan bruge php vil dit script så opdage det eller skal der ligge noget php koden for at det kan se det?
Avatar billede phpgris Nybegynder
24. juni 2003 - 21:55 #19
Du skal finde den linje hvor der står error_reporting (det er ikke en af dem hvor der står semikolon foran, det er bare kommentarer). Den skal du ændre så der kommer til at stå:

error_reporting  =  E_ALL & ~E_NOTICE

Nej, PHP behøver ikke at være i brug. Det skal bare være installeret på serveren (igen under forudsætning af at "Server"-headeren ikke er slået fra).
Avatar billede xbobby Nybegynder
24. juni 2003 - 23:01 #20
Så vil jeg sige tak for denne gang phpgris, din feeback er til UG med kryds og slange og scriptet lige så, så jeg dine velfortjente point er på vej til dig.

Hilsen fra en glad xbobby :-)
Avatar billede phpgris Nybegynder
24. juni 2003 - 23:11 #21
Takker :)
Avatar billede Slettet bruger
24. juni 2003 - 23:39 #22
Du har helt ret, det skulle ikke have været et svar. Jeg undskylder.
Avatar billede xbobby Nybegynder
25. juni 2003 - 10:14 #23
modtaget her - skifter :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester