[PHP] if(file_exists('') werk niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Radiance
  • Registratie: April 2005
  • Laatst online: 08-09 18:18
Ik heb op mijn website een script dat een bestand aanmaakt en in dit bestand staat dan een tekst.
Nou moet er op de hoofdpagina automatisch een link komen naar dit bestandje.
Als er geen tekst word toegevoegd in word het bestand ook niet aangemaakt en dat klopt.
Alleen nu moet de link naar het bestandje ook niet verschijnen als het bestand niet bestaat.
Nu controleer ik of het bestand bestaat met deze code:
PHP:
1
2
3
4
5
6
7
8
if(file_exists("pad/naar/".$naam."-".$bericht.".txt")) 
{ 
    print"<p>$naam<br /><a href='http://$url'>$bericht</a><br /><a href='admin/tracklist/$naam-$bericht.txt' target='_blank'>Tracklist</a><hr color='#FF6633' /></p>"; 
}
    else
{
    print"<p>$naam<br /><a href='http://$url'>$bericht</a><br /><hr color='#FF6633' /></p>";
}}

Alleen dit werkt niet.
Als ik bij if(file_exists("pad/naar/".$naam."-".$bericht.".txt")) het voledige pad geef dus bijvoorbeeld pad/naar/naam-bericht.txt dan werkt het wel en verschijnt er overal een link.
Nou zit het probleem denk ik in de variabellen maar op wat voor manier ik die er ook neerzet het blijft fout gaan.
Wat doe ik fout?

Ik heb deze 2 bestanden
audio.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?
echo"<p class='contenttitle'>A U D I O</p>"; 
$bestand=array_reverse(file("admin/audio.txt"));
echo ($bestand) ? "" : "<h3>There isn't audio posted yet!</h3>"; 

foreach($bestand as $i) 
{ 
    $i=explode("|",$i); 
    $naam = $i[0]; 
    $url = $i[1];
    $bericht = $i[2]; 
    $url = htmlspecialchars($url);  
    $naam = htmlspecialchars($naam); 
    $bericht = htmlspecialchars($bericht); 
    $bericht = str_replace("&lt;br&gt;","<br>",$bericht);
    if(file_exists('admin/tracklist/$naam-$bericht.txt')) 
{ 
    print"<p>$naam<br /><a href='http://$url'>$bericht</a><br /><a href='admin/tracklist/$naam-$bericht.txt' target='_blank'>Tracklist</a><hr color='#FF6633' /></p>"; 
}
    else
{
    print"<p>$naam<br /><a href='http://$url'>$bericht</a><br /><hr color='#FF6633' /></p>";
}}
?>

schrijf_audio.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php
    include('inc/head.php'); 
    if(!$tracklist)
{
$datum = date("d-m-Y"); 
if($naam && $url && $bericht) { 
    $bestand = fopen("audio.txt", "a"); 
    $bericht = str_replace("\n","<br />",$bericht); 
    $bericht = str_replace("|","",$bericht); 
    $naam = str_replace("|","",$naam); 
    $url = str_replace("|","",$url); 
    fwrite($bestand, "$naam|$url|$bericht\n"); 
    fclose($bestand); 
    echo"De MP3 is toegevoegd!"; 
} else { 
    echo"<form method=post action=$PHP_SELF>"; 
    echo"Artiest(en):<br><input type=text name=naam> (bijv. Tactix ft. REN51)<br />"; 
    echo"URL:<br><input type=text name=url>(zonder http://)<br>"; 
    echo"Beschrijving:<br><textarea cols=30 rows=10 name=bericht></textarea>(bijv. Live @ Reaktor 24-09-2005)<br />";  
    echo"Tracklist:<br><textarea cols=30 rows=10 name=tracklist></textarea>"; 
    echo"<input type=submit value='Verstuur'>"; 
    echo"</form>"; 
} 
    include('inc/foot.php'); 
}
else
{
if(!function_exists('file_put_contents')) {
  function file_put_contents($filename, $data, $file_append = false) {
   $fp = fopen($filename, (!$file_append ? 'w+' : 'a+'));
   if(!$fp) {
     trigger_error('file_put_contents cannot write in file.', E_USER_ERROR);
     return;
   }
   fputs($fp, $data);
   fclose($fp);
  }
}
file_put_contents("tracklist/$bericht .txt", "$tracklist");

$datum = date("d-m-Y"); 
if($naam && $url && $bericht) { 
    $bestand = fopen("audio.txt", "a"); 
    $bericht = str_replace("\n","<br />",$bericht); 
    $bericht = str_replace("|","",$bericht); 
    $naam = str_replace("|","",$naam); 
    $url = str_replace("|","",$url); 
    fwrite($bestand, "$naam|$url|$bericht\n"); 
    fclose($bestand); 
    echo"De MP3 is toegevoegd!"; 
} else { 
    echo"<form method=post action=$PHP_SELF>"; 
    echo"Artiest(en):<br><input type=text name=naam> (bijv. Tactix ft. REN51)<br />"; 
    echo"URL:<br><input type=text name=url>(zonder http://)<br>"; 
    echo"Beschrijving:<br><textarea cols=30 rows=10 name=bericht></textarea>(bijv. Live @ Reaktor 24-09-2005)<br />";  
    echo"Tracklist:<br><textarea cols=30 rows=10 name=tracklist></textarea>"; 
    echo"<input type=submit value='Verstuur'>"; 
    echo"</form>"; 
} 
    include('inc/foot.php'); 

}
?>

Youtube


Acties:
  • 0 Henk 'm!

Verwijderd

Probeer variabelen eens zo te gebruiken;

PHP:
1
$pad = "www/".$rootname."/mapnaam/".$filename;


Dus;

PHP:
1
2
3
if(file_exists('admin/tracklist/$naam-$bericht.txt'))  
// wordt;
if(file_exists('admin/tracklist/'.$naam.'-'.$bericht.'.txt'))


Als dat niet werkt is je pad niet juist.Heb overigens het vermoeden dat je deze code niet zelf gemaakt hebt en dat je nu enkele kleine dingen aan het wijzigen bent. Als dit zo is, ik weet dat natuurlijk niet zeker, dan zou ik me als ik jou was eerst verdiepen in de basiskennis van PHP.

[ Voor 123% gewijzigd door Verwijderd op 02-12-2005 15:39 ]


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 09:55

Bosmonster

*zucht*

PHP:
1
2
3
$naam = htmlspecialchars($naam);  
    $bericht = htmlspecialchars($bericht);  
    $bericht = str_replace("&lt;br&gt;","<br>",$bericht);


?? Je bestandsnaam bevat allerlei html? en is zelfs htmlspecialchar'd?? Je gebruikt het 'bericht' ook nog eens als bestandsnaam ofzo?

Verder werkt dit natuurlijk niet tussen enkele quotes:

PHP:
1
if(file_exists('admin/tracklist/$naam-$bericht.txt'))

[ Voor 46% gewijzigd door Bosmonster op 02-12-2005 15:39 ]


Acties:
  • 0 Henk 'm!

  • Radiance
  • Registratie: April 2005
  • Laatst online: 08-09 18:18
Het werkt nog steeds niet.
Die HTML heb ik nu uit de code gehaalt en ik heb die regel file_exists veranderd.
Dit heb ik nu staat
PHP:
1
if(file_exists('admin/tracklist/'.$naam.'-'.$bericht.'.txt'))

maar als ik het zo doe werkt het weer wel alleen krijgen alle links dezelde link dus dat werkt niet
PHP:
1
if(file_exists('admin/tracklist/test-test.txt'))

Ik gebruik de variabellen $naam en $bericht ook om het bestand te benoemen en als ik dit doe
PHP:
1
if(echo "admin/tracklist/'.$naam.'-'.$bericht.'.txt'))";

staat er wel gewoon test-test.txt
Dit is een van m'n eerste probeersels met PHP dus ik ben dr nog niet zo goed in.

Youtube


Acties:
  • 0 Henk 'm!

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 10-02 23:00
Lees dit eens: http://nl2.php.net/types.string

Weet goed het verschil tussen enkele quotes ' en dubbele quotes " ---> ik ben voorstander net zoals veel mensen van enkele quotes waarbij je de variabelen goed ziet staan. Op de manier van 'admin/tracklist/'.$naam.'-'.$bericht.'.txt' dus.

Verder begrijp ik je probleem niet meer: Alle links krijgen dezelfde link?
Ze krijgen gewoon de link $url zoals er staat. veranderd die variabele wel? Ik denk dat je eerst wat meer moet proberen voordat je alles vraagt en even logisch moet nadenken.