Avatar billede cmau Nybegynder
26. juli 2005 - 19:43 Der er 19 kommentarer og
1 løsning

$url bliver til Array

Hvorfor kommer feltet url i databasen til at ideholde Array, istedet for den url som den indeholder fra start? hvor går det galt?

<?php

include('sql.php');
$url = $_GET['url'];

if(isset($url)) {

$tags = get_meta_tags($url);
$time = time();
$title = $tags['title'];
$description = $tags['description'];
$keywords = $tags['keywords'];

if(empty($title) || empty($description) || empty($keywords)) {

echo "Der mangler metatags på siden, det er krævet at følgende findes:<br>title<br>keywords<br>description";

} else {

if(preg_match("/http:\/\/(.*?)\//i",$url,$url)) {
if (!eregi("^www.", $url[1])) {
$url = "www.".$url[1];
} else {
$url = $url[1];
}
}

$query = mysql_query("SELECT * FROM search_data WHERE url='$url'");
if(mysql_num_rows($query) == 0) {

mysql_query("INSERT INTO search_data (url,title,description,keywords,last_check) VALUES ('$url','$title','$description','keywords','$time')") or die(mysql_error());

} else {

mysql_query("UPDATE search_data SET title='$title', description='$description', keywords='$keywords', last_check='$time'

WHERE url='$url'") or die(mysql_error());

}
echo "Denne data blev smidt i databasen, for domænet $url:<br>$title<br>$keywords<br>$description";
}
} else {
echo '<form name="formen" method="GET" action="meta.php" enctype="multipart/form-data"><input value="http://" size="50" name="url">&nbsp;<input type="submit" value="Smid min side i søge maskinen!!"></form>';
}
?>
Avatar billede nielle Nybegynder
26. juli 2005 - 20:03 #1
Prøv med dette:

if (preg_match("/http:\/\/(.*?)\//i", $url, $matches))
{
    if (!eregi("^www.", $matches[1]))
    {
        $url = "www." . $matches[1];
    }
    else
    {
        $url = $matches[1];
    }
}

Jeg gætter på at det er preg_match som laver din $url om til et array også selv om der ikke er noget som matcher.
Avatar billede cmau Nybegynder
26. juli 2005 - 20:07 #2
desværre en på udvikleren var hurtigere, med at jeg skulle ændre navne.
Avatar billede cmau Nybegynder
26. juli 2005 - 20:13 #3
hmm den virker heller ikke din, url bliver bare sat til ingenting.
Avatar billede cmau Nybegynder
26. juli 2005 - 20:15 #4
<?php

include('sql.php');
$url = $_GET['url'];

if(isset($url)) {

$tags = get_meta_tags($url);
$time = time();
$title = $tags['title'];
$description = $tags['description'];
$keywords = $tags['keywords'];

if(empty($title) || empty($description) || empty($keywords)) {

echo "Der mangler metatags på siden, det er krævet at følgende findes:<br>title<br>keywords<br>description";

} else {

if (preg_match("/http:\/\/(.*?)\//i", $url, $matches))
{
    if (!eregi("^www.", $matches[1]))
    {
        $url = "www." . $matches[1];
    }
    else
    {
        $url = $matches[1];
    }
}

$query = mysql_query("SELECT * FROM search_data WHERE url='$url'");
if(mysql_num_rows($query) == 0) {

mysql_query("INSERT INTO search_data (url,title,description,keywords,last_check) VALUES

('$url','$title','$description','keywords','$time')") or die(mysql_error());

} else {

mysql_query("UPDATE search_data SET title='$title', description='$description', keywords='$keywords', last_check='$time'

WHERE url='$url'") or die(mysql_error());

}
echo "Denne data blev smidt i databasen, for domænet $url:<br>$title<br>$keywords<br>$description";
}
} else {
echo '<form name="formen" method="GET" action="meta.php" enctype="multipart/form-data"><input value="http://" size="50"

name="url">&nbsp;<input type="submit" value="Smid min side i søge maskinen!!"></form>';
}
?>

Nu komemr der en url, men den blev http://dennis.babegalleri.dk

det er meningen at
if (preg_match("/http:\/\/(.*?)\//i", $url, $matches))
{
    if (!eregi("^www.", $matches[1]))
    {
        $url = "www." . $matches[1];
    }
    else
    {
        $url = $matches[1];
    }
}

skal fjerne http:// og smide www. ind hvis det ikke er.
Avatar billede nielle Nybegynder
26. juli 2005 - 20:18 #5
Ikke desto mindre må det være lige deromkring det går galt - det er jo der at det afgøres at det er en INSERT der skal udføres. Prøv - som debugning - at udskrive $url lige før at der skrives til databasen:

<?php
include('sql.php');
$url = $_GET['url'];

if (isset($url))
{
    $tags = get_meta_tags($url);
    $time = time();
    $title = $tags['title'];
    $description = $tags['description'];
    $keywords = $tags['keywords'];

    if (empty($title) || empty($description) || empty($keywords))
    {
        echo "Der mangler metatags på siden, det er krævet at følgende findes:<br>title<br>keywords<br>description";
    }
    else
    {
        if (preg_match("/http:\/\/(.*?)\//i", $url, $matches))
        {
            if (!eregi("^www.", $matches[1]))
            {
                $url = "www." . $matches[1];
            }
            else
            {
                $url = $matches[1];
            }
        }

        echo "DEBUG: " . $url . "<br>";

        $query = mysql_query("SELECT * FROM search_data WHERE url='$url'");
        if (mysql_num_rows($query) == 0)
        {
            mysql_query("INSERT INTO search_data (url, title, description, keywords, last_check) VALUES ('$url', '$title', '$description', 'keywords', '$time')") or die(mysql_error());
        }
        else
        {
            mysql_query("UPDATE search_data SET title='$title', description='$description', keywords='$keywords', last_check='$time' WHERE url='$url'") or die(mysql_error());
        }

        echo "Denne data blev smidt i databasen, for domænet $url:<br>$title<br>$keywords<br>$description";
    }
}
else
{
    echo '<form name="formen" method="GET" action="meta.php" enctype="multipart/form-data"><input value="http://" size="50" name="url">&nbsp;<input type="submit" value="Smid min side i søge maskinen!!"></form>';
}
?>
Avatar billede cmau Nybegynder
26. juli 2005 - 20:22 #6
se hvad jeg skrev ^^ fandt den fejl.
Avatar billede cmau Nybegynder
26. juli 2005 - 20:35 #7
help?
Avatar billede nielle Nybegynder
26. juli 2005 - 20:46 #8
Jamen, det er jo bare ikke forklaringen på hvorfor at der kommer til at stå Array?
Avatar billede cmau Nybegynder
26. juli 2005 - 20:48 #9
Fejlen med array fik jeg rettet ved at bruge dit og ændre nogle navne.

men nu gider den ikke at fjerne http:// hvis det findes i $url og smide www. hvis det ikke er der.
Avatar billede nielle Nybegynder
26. juli 2005 - 20:50 #10
Det kan godt være at du mener at det er pænere med;

www.babegalleri.dk

- i stedet for:

http://dennis.babegalleri.dk

- men relt faktisk er det slet ikke sikkert at:

www.babegalleri.dk

- vil være et lovligt URL:

www er bare et tilfældigt valgt subdomæne som kan kan have eller ej.
Avatar billede nielle Nybegynder
26. juli 2005 - 20:51 #11
... ergo er det måske helt forkert bare bevistløst at sætte et www ind foran hvis det ikke er der.
Avatar billede nielle Nybegynder
26. juli 2005 - 20:52 #12
Et foranstillet http:// kan fjernes sådan her:

$url = str_replace("http://", "", $url);
Avatar billede nielle Nybegynder
26. juli 2005 - 20:57 #13
... eller sådan her:

if preg_match("/http:\/\/(.*?)(\/|$)/i", $url, $matches) $url = $matches[1];
Avatar billede cmau Nybegynder
26. juli 2005 - 21:22 #14
26/07-2005 20:50:59 > Nej den skal lave www.dennis.babegalleri.dk
Avatar billede nielle Nybegynder
26. juli 2005 - 21:33 #15
Min pointe er at.

www.dennis.babegalleri.dk

- ikke nødvendigvis er et korrekt URL. Webserverene er *ikke* tvunget til at svare på subdomænet www. Og der er faktisk en hel del som ikke gør det.

F.eks. er:

http://hjem.get2net.dk/eks/

- en lovlig side (jeg kender *ikke* persoinen - det er bare et eksempel), mens at:

www.get2net.dk/eks

- ikke er en lovlig side. Foruden at:

www.get2net.dk

- måske nok er lovlig, men *intet* har med det oprindelige url at gøre.

Når du nu ved dette, vil du så stadig have www foran? For det kan selvfølgeligt sagtens gøres.
Avatar billede cmau Nybegynder
26. juli 2005 - 23:33 #16
nå ja kan godt se.. så skal den lave http://domæne.dk, men der er også nogle domæner der ikke godtager uden www foran, fx gjorde http://s2a.dk ikke for et par måneder siden.
Avatar billede cmau Nybegynder
27. juli 2005 - 00:19 #17
hov det var jo lavet!!

Men har et spg mere.

Jeg henter jo sidens titel gennem
$tags = get_meta_tags($url);
$title = $tags['title'];

Men det er ikke mange sider der har title i metatag, fx her på exp.dk SÅ hvordan kan jeg så gøre sådan at hvis der ikke er en meta title så tager den det mellem <title></title>
Avatar billede nielle Nybegynder
27. juli 2005 - 08:35 #18
Du skal starte med at downloade siden. Dette gøres med fopen:

$handle = fopen($url, "r");
while (!feof($handle))
{
    $content .= fread($handle, 4096);
}
fclose($handle);

Derefter kan du parse $content for at finde det der står mellem title-tagsene:

if (preg_match("/<title>(.*?)</title>/i", $content, $matches)
    $title = $matches[1];
Avatar billede cmau Nybegynder
30. juli 2005 - 20:56 #19
Smid svar
Avatar billede nielle Nybegynder
30. juli 2005 - 21:03 #20
Svar :^)
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