Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

PHP: link maken met $file lukt niet

Anoniem
gerben
13 antwoorden
  • Even vooraf: ben een PHP-leek, dus…
    Ik probeer iets op m'n site zo te maken, dat een bezoeker na het aanklikken van een optie naar de betreffende pagina kan gaan middels een link die zich dan opdoet:

    Dus:
    1) de bezoeker klikt een optie aan
    2) de naam van de pagina wordt opgehaald middels $file

    Tot dan toe werkt alles goed. Echter, de link die verschijnt, werkt vervolgens niet. De code die ik gebruik om de link weer te geven is heel simpel:
    [code:1:32df718c1c]echo ('<a href="'. $file. '" title="Test">test</a>');[/code:1:32df718c1c]
    Als ik de link maak door het hele adres gewoon in de echo te typen, dan gaat het wel:
    [code:1:32df718c1c]echo ('<a href="content/index.php" title="Test">Test</a>');[/code:1:32df718c1c]
    De code die gegenereerd wordt is voor beide varianten hetzelfde, dus het is niet zo als zou $file niet goed gedefinieerd zijn. Hoe kan dit? Dat de output van beide codes hetzelfde is, maar dat de eerste variant niet werkt?

    Alvast bedankt.
  • probeer dit is:

    [code:1:11cb5ceda1]echo "<a href=\". $file.\" title=\"Test\">test</a>";[/code:1:11cb5ceda1]
    [code:1:11cb5ceda1]echo "<a href=\"content/index.php\" title=\"test\">test</a>";[/code:1:11cb5ceda1]
    als je een quote (") gebruikt, kapt deze de echo regel af, je moet er daarom een \ voor zetten
  • En waarom niet gewoon:

    echo "<a href="$file" title="Test">test</a>";

    Jouw eerste regel geeft ook niet de output die je waarschijnlijk in gedachten hebt, inderdaad door het foute gebruik van de quotes.

    echo "<a href=". $file." title="Test">test</a>";

    Ik denk dat daar zoiets uitkomt:

    <a href=".$file." title="Test">test</a>
  • [quote:a9be65d5e2="Dot-cpu"]probeer dit is:

    [code:1:a9be65d5e2]echo "<a href=\". $file.\" title=\"Test\">test</a>";[/code:1:a9be65d5e2]
    [code:1:a9be65d5e2]echo "<a href=\"content/index.php\" title=\"test\">test</a>";[/code:1:a9be65d5e2]
    als je een quote (") gebruikt, kapt deze de echo regel af, je moet er daarom een \ voor zetten[/quote:a9be65d5e2]

    als je goed kijkt, dan maakt dat niet uit ;)

    want hij gebruikt single-quotes, om de echo te openen (echo(' ');) vervolgens kan je dan binnen die single quoates, dbl quotes gebruiken, en die zal hij dan gewoon naar het scherm *echo-en*

    dus echo (' tekst "tekst" tekst '); geeft als output tekst "tekst" tekst :)
  • Als ik de code van de topicstart test dan gaat dat prima. Ook gebruikt hij volgens mij de quotes ook goed. Afgezien van de haakjes rond de echo die afaik overbodig zijn.

    [code:1:fbf3451b17]
    echo ('<a href="'. $file. '" title="Test">test</a>');
    [/code:1:fbf3451b17]

    Alles wat binnen een enkele quote staat wordt immers niet geparsed, dus de output wordt dus ook

    <a href=" [i:fbf3451b17]output van $file[/i:fbf3451b17] " title="test">test</a>

    Immers, met een optelcommando, de punt . , wordt de variabele $file geparsed en dit wordt afgesloten met, tussen enkele quotes –> zie boven

    Ik denk eerder dat de waadie de uit $file komt niet correct is, misschien kun je eens een

    [b:fbf3451b17]echo $file[/b:fbf3451b17] Proberen.
  • [quote:32d5ba0af9="gerben"]En waarom niet gewoon:

    echo "<a href="$file" title="Test">test</a>";

    [/quote:32d5ba0af9]
    Gaat inderdaad ook goed

    [quote:32d5ba0af9]
    echo "<a href=". $file." title="Test">test</a>";

    Ik denk dat daar zoiets uitkomt:

    <a href=".$file." title="Test">test</a>[/quote:32d5ba0af9]
    Nee, dat zou het geval zijn wanneer er rond de echo een enkele quote gezet zou zijn :)
  • Bedankt voor de reacties, ben er inmiddels uit: het probleem lag bij mijn testserver (EasyPHP 1.8): die pikte het op de één of andere manier niet op, de server van de website wel (wel lastig om ff snel te testen…)

    Als ik jullie nog een keer mag lastigvallen ergens mee (en dit keer ligt het niet aan de testserver…):

    Op de site moeten diversen personen een eigen "sub-site" in kunnen richten. Hiervoor heb ik een soort beheersgedeelte ingericht. Een ieder mag voor voorlopig maximaal 5 mb aan ruimte benutten.

    Nu heb ik een scriptje gevonden waarmee je de ruimte kunt uitrekenen van een map inclusief de subdir's. Nu werkt het wel (grootte van totale map wordt weergegeven), maar tegelijkertijd wordt er een foutmelding weergegeven, namelijk:
    [code:1:04728a1d3c]Warning: chdir(): No such file or directory (errno 2) in /home/hsphere/local/home/spiderli/naam.nl/test/element_usage.php on line 6[/code:1:04728a1d3c]
    Het script ziet er zo uit:
    [code:1:04728a1d3c]<?php

    function DirStat($directory) {
    global $FolderCount, $FileCount, $FolderSize;

    chdir($directory);
    $directory = getcwd();
    if($open = opendir($directory)) {
    while($file = readdir($open)) {
    if($file == '..' || $file == '.') continue;
    if(is_file($file)) {
    $FileCount++;
    $FolderSize += filesize($file);
    } elseif(is_dir($file)) {
    $FolderCount++;
    }
    }
    if($FolderCount > 0) {
    $open2 = opendir($directory);
    while($folders = readdir($open2)) {
    $folder = $directory.'/'.$folders;
    if($folders == '..' || $folders == '.') continue;
    if(is_dir($folder)) {
    DirStat($folder);
    }
    }
    closedir($open2);
    }
    closedir($open);
    }
    }[/code:1:04728a1d3c]
    Iemand een idee wat er fout gaat? Kan ik anders deze fout op de één of andere manier onderdrukken (of moet dat perse voor de hele server dan gebeuren?).

    Groet,
  • [quote:35f13a3dc7="Japaveh"]Nee, dat zou het geval zijn wanneer er rond de echo een enkele quote gezet zou zijn :)[/quote:35f13a3dc7]
    Je hebt gelijk, ik deed het even te snel uit het hoofd. Maar de uitkomst is toch niet helemaal jofel. Net even uitgetest.

    $file = "blabla";
    echo "<a href=". $file." title="Test">test</a>";

    Geeft dit als uitkomst:

    <a href=". blabla." title="Test">test</a>

    De punten en de spatie gooien denk ik toch wel een beetje roet in het eten.
  • [quote:b456868442="gerben"][quote:b456868442="Japaveh"]Nee, dat zou het geval zijn wanneer er rond de echo een enkele quote gezet zou zijn :)[/quote:b456868442]
    Je hebt gelijk, ik deed het even te snel uit het hoofd. Maar de uitkomst is toch niet helemaal jofel. Net even uitgetest.

    $file = "blabla";
    echo "<a href=". $file." title="Test">test</a>";

    Geeft dit als uitkomst:

    <a href=". blabla." title="Test">test</a>

    De punten en de spatie gooien denk ik toch wel een beetje roet in het eten.[/quote:b456868442]
    Ja, maar dat komt inderdaad door de punten.
    Dit kun je oplossen door een extra " toe te voegen., zo dus
    $file = "blabla";
    echo "<a href="[b:b456868442]"[/b:b456868442]. $file.[b:b456868442]"[/b:b456868442]" title="Test">test</a>";
    Maar feitelijk doe je dan weer precies hetzelfde als in de TS, maaar dan met dubbele quotes, daarom moet die quote na de href ook geexcaped worden.
  • Ik zou het toch gewoon zo doen:
    echo "<a href="$file" title="Test">test</a>";
    Het concatenaten is overbodig en waarschijnlijk niet goed begrepen door TS.
  • [quote:49ed44e0cd="gerben"]Ik zou het toch gewoon zo doen:[/quote:49ed44e0cd]
    En ik zou het zo doen:

  • [quote:84ef79197c="Annie"][quote:84ef79197c="gerben"]Ik zou het toch gewoon zo doen:[/quote:84ef79197c]
    En ik zou het zo doen:

  • [quote:4ec0f7ed5c="InZane"][quote:4ec0f7ed5c="Annie"][quote:4ec0f7ed5c="gerben"]Ik zou het toch gewoon zo doen:[/quote:4ec0f7ed5c]
    En ik zou het zo doen:

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.