Ga naar inhoud

[PHP] "file_exists"


Aanbevolen berichten

Ik gebruik een Image Gallery in PHP. Nu heb ik daarvan twee versies namelijk één voor een resolutie 800*600 en één voor 1024*768. Dat werkt perfect op 1 ding na: de reacties op de foto's zijn voor beide resoluties verschillend. Ik wil juist dat de reacties niet gescheiden worden, maar dat de reacties voor beide resoluties hetzelfde zijn. Het gaat om de volgende code: [code:1:aa582b9444] $p=trim($_GET['p']); $ex = substr(strrchr($p,"."),0); $pixas = substr($p, 0, strlen($p) - strlen(strstr($p,$ex))); $filename = "".$pixas.".txt"; if (!file_exists($filename) && file_exists($p)){//cheking if exists comments file touch($filename); chmod($filename,0666); } $byla=file($filename); $max = count($byla);[/code:1:aa582b9444] Ik heb dit veranderd in: [code:1:aa582b9444] $p=trim($_GET['p']); $ex = substr(strrchr($p,"."),0); $pixas = substr($p, 0, strlen($p) - strlen(strstr($p,$ex))); $folder ="http://localhost/Gallery/1024x768/"; $filename2 = "".$pixas.".txt"; $filename = "$folder$filename2"; if (!file_exists($filename) && file_exists($p)){//cheking if exists comments file touch($filename); chmod($filename,0666); } $byla=file($filename); $max = count($byla);[/code:1:aa582b9444] Dit werkt echter niet, ik krijg de volgende foutmelding:[quote:aa582b9444] Warning: touch(): Unable to create file http://localhost/Gallery/1024x768/01_001.txt because No such file or directory in /srv/localhost/Gallery/1024x768/01_2.php on line 355 Warning: chmod(): No such file or directory in /srv/localhost/Gallery/1024x768/01_2.php on line 356 Warning: file(http://localhost/Gallery/1024x768/01_001.txt): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /srv/localhost/Gallery/1024x768/01_2.php on line 358 Warning: rsort() expects parameter 1 to be array, boolean given in /srv/localhost/Gallery/1024x768/01_2.php on line 365 [/quote:aa582b9444]
Link naar reactie
Inmiddels krijg ik alleen nog de volgende foutmelding: [quote:644cd7cc5f] Warning: touch(): Unable to create file http://localhost/Gallery/1024x768/01_008.txt because No such file or directory in /srv/localhost/www/www.domein.nl/Gallery/800x600/01_2.php on line 355 Warning: chmod(): No such file or directory in /srv/localhost/www/www.domein.nl/Gallery/800x600/01_2.php on line 356[/quote:644cd7cc5f]
Link naar reactie
De fout zit 'm is het stukje [code:1:123dfff032]$folder = "http://localhost/Gallery/1024x768/"[/code:1:123dfff032] Het pad waar een bestand wordt gemaakt/gelezen wordt altijd bekeken vanaf de php executable zelf, niet vanaf de webbrowser, dus php heeft geen idee wat het met een pad als 'http://localhost/...' moet, omdat het gaat proberen de volgende map te openen: '/srv/localhost/http://locahlost/Gallery/....'. Wat je moet veranderen: je moet in de $folder variable het interne pad zetten naar de map waarin je de de foto wilt zetten. Ik denk dat dit zou moeten werken:[code:1:123dfff032]$folder = "/srv/localhost/www/www.insania.nl/Gallery/1024x768/"[/code:1:123dfff032] Je zou ook de [url=http://nl.php.net/manual/nl/function.realpath.php]realpath()[/url] functie kunnen gebruiken om het exacte pad naar een map uit te vissen. Groetjes, Vic
Link naar reactie
[quote:e817cf820a="Vic"]Je zou ook de [url=http://nl.php.net/manual/nl/function.realpath.php]realpath()[/url] functie kunnen gebruiken om het exacte pad naar een map uit te vissen. [/quote:e817cf820a] Bedankt Vic, nu krijg ik de foutmelding niet meer! :roll: Ik heb je raad opgevolgd en het zo gedaan: [quote:e817cf820a] $folder = realpath ("http://localhost/Gallery/1024x768/"); $filename2 = "".$pixas.".txt"; $filename = "$folder" . "$filename2"; [/quote:e817cf820a] Alleen werkt het nu nog steeds niet... :-? Ik krijg weliswaar geen foutmelding meer, maar toch worden de reacties voor beide resoluties verschillend weergegeven. Het ligt, denk ik, niet aan bovenstaande code, maar aan de volgende code verder op de pagina: [quote:e817cf820a] // show comments for ($u=$startas; $u<$endaz; $u++){ $infa = explode("|",$byla[$u]); $infa[3] = wordwrap( $infa[3], 95, "\n", 1); $html.=' <table class="table_border" width="300" border="0" cellpadding="0" cellspacing="0" align="center"> <tr> <td align="left" class="comments_up" >'.$lang["name"].' : '; if ($infa[2]!==''){$html.= '<a href="mailto:'.$infa[2].'">'.$infa[1].'</a>';} else $html.= $infa[1]; $html.=' </td> </tr>'; $html.=' <tr> <td colspan="2">'.$infa[3].'<br><div align="right">'.$infa[5].'</div>'; if ($infa[6]){ $html.=' <div align="left">'.$lang["admin_name"].' :<br />'.$infa[6].'</div>'; } $html.=' </td> </tr> </table>'; }//end for [/quote:e817cf820a] Alleen snap ik hier niets van :( Ik gebruik overigens [url=http://www.hotscripts.com/jump.php?ID=28901]deze[/url] picture gallery. Wie weet raad?
Link naar reactie
Hmm... ik had het stukje '$folder = realpath("http://www.mijnserver.nl");' eens uitgeprobeerd op mijn lokale Apache server, maar hierbij kreeg ik een vreemde, niet-kloppende directory. Ik denk daarom ook dat daarom het commentaar niet goed gelezen wordt. Je zou ook [code:1:eb30ea67e4]$folder = realpath(".");[/code:1:eb30ea67e4]kunnen gebruiken, dan bevat $folder het exacte pad naar de map waarin je script loopt. Groetjes, Vic
Link naar reactie
[quote:ff2152a0a6="Vic"] Je zou ook [code:1:ff2152a0a6]$folder = realpath(".");[/code:1:ff2152a0a6]kunnen gebruiken, dan bevat $folder het exacte pad naar de map waarin je script loopt.[/quote:ff2152a0a6] Bedankt voor je reactie, maar ik wil juist dat $folder het exacte pad naar een andere map dan de map waarin het script loopt bevat! Het script loopt namelijk in de map 800x600, maar ik wil dat $folder het exacte pad naar de map 1024x768 bevat. :roll: Ik hoop dat je hiermee iets kunt. Wederom alvast bedankt!
Link naar reactie
Ok, alvast bedankt iig! :) Hier is 'ie: [code:1:c6cf3dfa7f] [+] www.domein.nl | [+] Gallery | [+] 1024x768 (naar deze map moet het script verwijzen) [+] 800x600 ( in deze map draait het script) [/code:1:c6cf3dfa7f] En hier in 'URL-taal': http://www.domein.nl/Gallery/1024x768/ http://www.domein.nl/Gallery/800x600/script.php
Link naar reactie
[quote:ba21066875="BasHamar"]Probeer dit anders eens:[code:1:ba21066875]$folder =$_SERVER["DOCUMENT_ROOT"]."/Gallery/1024x768/"; $filename2 = "".$pixas.".txt"; $filename = $folder.$filename2;[/code:1:ba21066875]Misschien dat je de eerste slash (voor "Gallery") moet verwijderen, maar dat is een kwestie van proberen. - Bas[/quote:ba21066875] Bedankt voor je hulp. Het moest met een slash, want zonder kreeg ik een foutmelding. Het werkt echter ook niet met slash, ik krijg weliswaar geen foutmelding, maar het heeft geen resultaat. De reacties worden niet getoond. Er staat onder de afbeelding wel "Reacties: 1", maar als je dan naar de reacties toegaat, zie je geen reacties in beeld. Ik denk dat het dus aan het volgende gedeelte van het script ligt: [code:1:ba21066875]// show comments for ($u=$startas; $u<$endaz; $u++){ $infa = explode("|",$byla[$u]); $infa[3] = wordwrap( $infa[3], 95, "\n", 1); $html.=' <table class="table_border" width="300" border="0" cellpadding="0" cellspacing="0" align="center"> <tr> <td align="left" class="comments_up" >'.$lang["name"].' : '; if ($infa[2]!==''){$html.= '<a href="mailto:'.$infa[2].'">'.$infa[1].'</a>';} else $html.= $infa[1]; $html.=' </td> </tr>'; $html.=' <tr> <td colspan="2">'.$infa[3].'<br><div align="right">'.$infa[5].'</div>'; if ($infa[6]){ $html.=' <div align="left">'.$lang["admin_name"].' :<br />'.$infa[6].'</div>'; } $html.=' </td> </tr> </table>'; }//end for [/code:1:ba21066875]
Link naar reactie
[quote:c3bf858690="BasHamar"]Zoek even op waar [i:c3bf858690]$byla[/i:c3bf858690] vandaan komt, daar lijken de reacties in te staan.[/quote:c3bf858690] Wederom bedankt voor de moeite. Ik heb het opgezocht en $byla komt hier voor: [code:1:c3bf858690] if ($_POST['submit']){ // if posting comment if (!$_POST['vardas'] || !$_POST['txt'] || !$_POST['pixas']){// if something is missing do nothing header("Location: $PHP_SELF?p=".$_POST['pixas']."&amp;pg=".$_POST['page'].""); exit; } //else write to file else{ $txt = stripslashes($_POST['txt']); if (getenv("HTTP_X_FORWARDED_FOR")){$tavo_ip = getenv("HTTP_X_FORWARDED_FOR");} else { $tavo_ip = getenv("REMOTE_ADDR");} $ex = substr(strrchr($_POST['pixas'],"."),0); $pix_txt = substr($_POST['pixas'], 0, strlen($_POST['pixas']) - strlen(strstr($_POST['pixas'],$ex)));//commens will be stored in txt file named like picture name $byla=fopen("".$pix_txt.".txt", "a"); fputs($byla, "".date("YmdHis",time())."|".replace($_POST['vardas'])."|".replace($_POST['meilas'])."|".replace($txt)."|$tavo_ip|".date("Y-m-d-H:i:s")."||\n"); fclose($byla); header("Location: $PHP_SELF?p=".$_POST['pixas']."&amp;pg=".$_POST['page'].""); } }//end $_POST['submit'] [/code:1:c3bf858690] En later in het bestand, komt het ook nog hier voor: [code:1:c3bf858690] $p=trim($_GET['p']); $ex = substr(strrchr($p,"."),0); $pixas = substr($p, 0, strlen($p) - strlen(strstr($p,$ex))); $folder =$_SERVER["DOCUMENT_ROOT"]."/Gallery/Events/800x600/"; $filename2 = "".$pixas.".txt"; $filename = "$folder" . "$filename2"; if (!file_exists($filename) && file_exists($p)){//cheking if exists comments file touch($filename); chmod($filename,0666); } $byla=file($filename); $max = count($byla); $html.= '[/code:1:c3bf858690] Hopelijk kun jij, of kunnen anderen, hier iets mee. Iig bedankt voor de hulp!
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...