Avatar billede php_programmoer Nybegynder
17. februar 2006 - 12:48 Der er 33 kommentarer og
1 løsning

sender videre til side som ligger i virabel via en header - how ?

Jeg har følgene kode

$url = $row['link'];

header("Location: $url");

hvorfor virker det ikke ?
Avatar billede michael_stim Ekspert
17. februar 2006 - 12:50 #1
Hvad står der i $url og hvilken fejl får du?
header("Location: ".$url."");
Avatar billede php_programmoer Nybegynder
17. februar 2006 - 12:53 #2
jamen jeg for ingen fejl, jeg for en "siden kan ikke vises"..
det er fordi jeg kun har en sql forespørgsel udover den der header.. der står altså intet tekst.. hvis jeg bare skriver noget blablabla tekst så virker det fint - dog redirecter den stadig ikke.

det virkede heller ikke
Avatar billede michael_stim Ekspert
17. februar 2006 - 12:56 #3
Så er det vel bare den forkerte url.
$url = $row['link'];
echo $url;
//header("Location: $url");
Avatar billede radion Nybegynder
17. februar 2006 - 12:57 #4
prøv at udkommentere din header ( sæt // foran linien )
og så skriv
echo $url;
og skriv her hvad den skriver.
hvis den ikke skriver noget er det dit udtræk af databasen det er galt med.

Du har vel også noget kode der åbner databasen og vælger tabel osv.

desuden skal du have ob_start(); øverst på siden, ellers kan du ikke bruge headers længere nede i koden
Avatar billede php_programmoer Nybegynder
17. februar 2006 - 13:00 #5
Der fik fat i den rigtige ende michael :-)

min $row['link'] var tom.. ved dog ikke hvorfor..

linket til siden jeg kigger på er:

http://127.0.0.1/Mine%20filer/vis_link.php?id=1

og koden er:

<?php
    include "mysql.php";

    $id = mysql_real_escape_string($_GET['id']);

    $query = mysql_query("SELECT * FROM links WHERE id = '$id'") or die(mysql_error());
    while ($row = mysql_fetch_array($query)) {
    $url = $row['link'];
    }

$url = $row['link'];
echo $url;

?>
Avatar billede michael_stim Ekspert
17. februar 2006 - 13:01 #6
Hvorfor skulle man ikke kunne det radion. Så længe man ikke udskriver noget til skærmen går det aldeles udemærket.
Avatar billede radion Nybegynder
17. februar 2006 - 13:03 #7
ja, du kan snildt udskrive, men du kan ikke bruge header() da den skal kaldes først i dokumentet. det kan omgåes med ob_start();

så vidt jeg har forstået :)
Avatar billede michael_stim Ekspert
17. februar 2006 - 13:04 #8
Så har du forstået forkert ;o)
Avatar billede radion Nybegynder
17. februar 2006 - 13:05 #9
undskyld, jeg vrøvler :) har ikke læst hvad du skrev ordentligt åbenbart :) nej, så længe der ikke udskrives noget er det fint med headers.. beklager :)
Avatar billede michael_stim Ekspert
17. februar 2006 - 13:09 #10
php_programmoer>> Går ud fra at der kun er en record med id 1. Så du behøver ikke at sætte din forespørgsel ind i en loop.
<?php
    include "mysql.php";

    $id = mysql_real_escape_string($_GET['id']);

    $query = mysql_query("SELECT * FROM links WHERE id = '$id'") or die(mysql_error());
  $row = mysql_fetch_array($query);
    $url = $row['link'];

$url = $row['link'];
echo $url;

?>

Så enten prøv at idskrive din $_GET variabel eller hårdkod et tal ind i din forespørgsel.
Avatar billede php_programmoer Nybegynder
17. februar 2006 - 13:14 #11
jeg har lige lavet nogle udskrifter af både $id og $url ... begge indeholdte det de skulle. Jeg har også lige prøvet at slette while løkken men lige lidt hjalp det.
Avatar billede michael_stim Ekspert
17. februar 2006 - 13:17 #12
Du har et mellemrum i Mine filer. Prøv at rette det med en underscore eller lign.
Avatar billede php_programmoer Nybegynder
17. februar 2006 - 13:22 #13
det kan jeg desværre ikke. Så er der en helvedes masse filer som skal ændres :(

men altså.. jeg har prøvet lidt med meta refresh..

problemet med det er jo bare at man kan kun kan bestemmet hvilken UNDERSIDE som den skal vidersende en til.. kan jeg ikke også bestemme hvilken side ?

det jeg vil med scriptet er jo at redirecte til den side som $url indeholder
Avatar billede michael_stim Ekspert
17. februar 2006 - 13:29 #14
Der er jo ikke noget i vejen med din header. Det er jo urlen den ikke kan finde i o m den siger siden kan ikke vises.
Avatar billede php_programmoer Nybegynder
17. februar 2006 - 13:35 #15
forstod ikke helt den sidste sætning du skrev, men en anden ting jeg heller ikke forstår er hvordan vi dog skal løse dette problem? - synes jeg har prøvet alt.
Avatar billede michael_stim Ekspert
17. februar 2006 - 13:40 #16
Det er jo ikke i headeren den fejler men i urlen. Da den siger "Siden kan ikke vises" redirecter den jo fint, men kan ikke finde siden. Ergo må det være urlen den er gal med.
Avatar billede php_programmoer Nybegynder
17. februar 2006 - 13:50 #17
Ok, nu er jeg helt sikker på at urlen indeholder følgene: www.lol.dk
- har selv lige kigget i databasen plus at jeg har udskrevet det.

men jeg for stadig en siden kan ikke vises ?
Avatar billede radion Nybegynder
17. februar 2006 - 13:52 #18
det skal være http://www.lol.dk
Avatar billede radion Nybegynder
17. februar 2006 - 13:54 #19
ellers tror serveren at www.lol.dk er en fil på den så den prøver at finde
http://127.0.0.1/Mine%20filer/www.lol.dk og det kan den ikke...
Avatar billede radion Nybegynder
17. februar 2006 - 13:57 #20
Jeg har en funktion her der tilføjer http:// til urls, så kan du jo køre din $url gennem den først..

function addhttp($url){
//adds http:// prefix in incomplete url's

    if (!strstr($url,'http://')==$url){
        $url = "http://" . $url;
   
    }
        return $url;
   
}

bruges så ved at:

$url=addhttp($url);
header("location:$url");
Avatar billede php_programmoer Nybegynder
17. februar 2006 - 13:59 #21
Det virkede :-)

Perfekt!

Hvis jeg smider 15 oveni kan du så ikke lige også lave en IF sætning som tjekker om ens link er et gyldigt link ? altså om det indeholder http://www.etellerandet.etellerandet
skal bruge det i min fil tilfoej_link.php :-)

Og læg et svar mester
Avatar billede radion Nybegynder
17. februar 2006 - 14:00 #22
hov. brug denne i stedet..

function addhttp($url){
//adds http:// prefix in incomplete url's

    if (strpos($url,'http://')===false){
        $url = "http://" . $url;
   
    }
        return $url;
   
}

der er ingen grund til at bruge flere resourcer end højst nødvendigt :)
Avatar billede radion Nybegynder
17. februar 2006 - 14:03 #23
nah, smid dem til michael_stim i stedet :) han har vist brugt mest tid i denne tråd :)

ang. det med validering af link, så prøv at checke her på eksperten, det er et spørgsmål der hyppigt er blevet besvaret :)

nå.. nu fandt jeg en til dig :) ( skal jeg jo ikke have point for..)

function linkcheck($urllen)
{
//godkender "file://", "ftp://", "http://", "https://", "ldap://"
if(ereg("^(file|ldap|http|https|ftp)+://(([a-z0-9]|\-)+\.)+([a-z]{2,6}|([a-z/]+[a-z/]{2,6}))$", $urllen))
{
    echo "OK!";
} else {
    echo "Ikke OK!";
}
}

tyvstjålet fra http://www.eksperten.dk/spm/382336
Avatar billede php_programmoer Nybegynder
17. februar 2006 - 14:12 #24
Din linkchecker virker ikke :-(
og jeg kan desværre ikke selv rette det da jeg slet ikke ved noget om reg.exp


Kan vi få et svar fra dig michael ? :-)
Avatar billede michael_stim Ekspert
17. februar 2006 - 14:20 #25
Skulle lige spise frokost ;o)
Jeg har nok point, tag du dem bare. Hovedsagen er at det virker.
Avatar billede php_programmoer Nybegynder
17. februar 2006 - 14:24 #26
jamen det virker jo ikke :-P

Tjek 14:12:08 (øverste del)
Avatar billede michael_stim Ekspert
17. februar 2006 - 14:43 #27
Virker fint her.

linkcheck("http://bla.bla");//udskriver "OK!"
linkcheck("bla.bla");//udskriver "Ikke OK!"
Avatar billede php_programmoer Nybegynder
17. februar 2006 - 14:53 #28
følgene virker ihvertfald ikke:

    $link = mysql_real_escape_string($_POST['link']);
    function linkcheck($link)
    {
    //godkender "file://", "ftp://", "http://", "https://", "ldap://"
    if(ereg("^(file|ldap|http|https|ftp)+://(([a-z0-9]|\-)+\.)+([a-z]{2,6}|([a-z/]+[a-z/]{2,6}))$", $link))
    {
        echo "&nbsp;";
    }else{
        echo "Ugyldigt link";
    }
    }
Avatar billede michael_stim Ekspert
17. februar 2006 - 15:19 #29
$link = mysql_real_escape_string($_POST['link']);
    function linkcheck('$link')
    {
    //godkender "file://", "ftp://", "http://", "https://", "ldap://" if(ereg("^(file|ldap|http|https|ftp)+://(([a-z0-9]|\-)+\.)+([a-z]{2,6}|([a-z/]+[a-z/]{2,6}))$", $link))
    {
        echo "&nbsp;";
    }else{
        echo "Ugyldigt link";
    }
    }
Avatar billede michael_stim Ekspert
17. februar 2006 - 15:20 #30
Sikkert fordi du har mellemrum. Der skal også lige '' rundt om $link i din ereg()
Avatar billede php_programmoer Nybegynder
17. februar 2006 - 15:29 #31
der fik jeg denne fejl:

unexpected T_CONSTANT_ENCAPSED_STRING, expecting '&' or T_VARIABLE

men kan jeg ikke bare bruge denne:

    if(!ereg('^https?\://[A-Za-z0-9\-]\.[A-Za-z0-9\.\-]+(/.+/?)?$',$link))
    {
    echo "FEJL";
    }
Avatar billede michael_stim Ekspert
17. februar 2006 - 15:36 #32
Don't know. Kan intet om regular expressions.
Avatar billede php_programmoer Nybegynder
17. februar 2006 - 15:39 #33
ok, nå ærgeligt du ikke ville have point - du hjalp mig ellers sammen med radion :-)

Tak!
Avatar billede radion Nybegynder
17. februar 2006 - 18:34 #34
det er jo en funktion..

så du kalder den ved at skrive
linkcheck($link);


og så skriver den "ugyldigt link" hvis det ikke er et link...

prøv at lade være med at omskrive funktionen jeg skrev til dig... og bare brug den som den er. det har ingen betydning at der står $urllen i stedet for.

du skal kalde den som jeg skrev øverst
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

IT-JOB