hoe controleren of bestand bestaat

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Paul Weiss

Paul Weiss

28/11/2024 18:22:08
Quote Anchor link
Hallo. ik heb onderstaande script om te controleren of een bestand bestaat. Is dit de juiste weg om te doen, en zou dit altijd werken? of zijn er alternatieven die beter zijn zonder extra bestanden op de site.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

<script>

// de direcory test dient aangemaakt te zijn met daarin het bestand somefile.txt.  dit script dient ergens in een javascript bestand te worden opgenomen. als iemand de site wilt kopieeren naar een ander domein
// dan krijg je de foutmelding geen geoorloofde site. dit komt omdat omdat de map test met daarin het bestand niet bestaat.
$.ajax({
    url:'https://mijnwebsite.nl/test/somefile.txt',
    type:'HEAD',
    error: function()
    {
        alert("niet gevonden);
    },
    success: function()
    {
        alert("gevonden");
    }
});
  

  
</script>
 
PHP hulp

PHP hulp

01/12/2024 09:57:39
 
- Ariën  -
Beheerder

- Ariën -

28/11/2024 18:54:24
Quote Anchor link
Je kan beter controleren op een 404 - Not Found. Zonder toegang tot die server, kan je nooit met zekerheid bepalen of een bestand wel of niet bestaat.
Gewijzigd op 28/11/2024 18:56:23 door - Ariën -
 
Paul Weiss

Paul Weiss

28/11/2024 19:09:28
Quote Anchor link
bedankt. maar dat is ook de bedoeling. het is de bedoeling dat het script alleen draait op de server zelf. dan zou het toch altijd moeten werken?

Toevoeging op 28/11/2024 19:12:22:

maar kan het ook zijn dat je geen toegang krijgt ook al draait het script op de server waar het bestand staat?
Gewijzigd op 28/11/2024 19:12:56 door Paul Weiss
 
- Ariën  -
Beheerder

- Ariën -

28/11/2024 21:30:48
Quote Anchor link
Als je ook extern wilt controleren of iets een 404 is, gebruik dan dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$handle
= curl_init($url);
curl_setopt($handle,  CURLOPT_RETURNTRANSFER, TRUE);
$response = curl_exec($handle);

$httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
if($httpCode == 404) {
    echo "Deze site bestaat niet.";
}


curl_close($handle);
?>


Het geeft geen 100% betrouwbaarheid, want als iemand alles wat niet bestaat doorverwijst naar een aparte pagina, en daar mist een 404-status header, dan zal dit als een 200 (OK) gezien worden. Maar als het via de webserver-deamon (Apache, Nginx, Litespeed etc..) wordt afgehandeld, dan krijg je netjes een 404 header voorgeschoteld, zoals het hoort.

Als je het lokaal op je eigen server wilt uitvoeren:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$filename
= "/bla/bla/meukee.jpg";

if (file_exists($filename)) {
    echo "Het bestand ".$filename." bestaat";
}
else {
    echo "Het bestand ".$filename." bestaat niet!";
}

?>
Gewijzigd op 28/11/2024 21:33:05 door - Ariën -
 
Paul Weiss

Paul Weiss

28/11/2024 22:40:40
Quote Anchor link
bedankt voor de tip. maar het moet javascript zijn. controle moet gebeuren vanuit de client kant.
 
- Ariën  -
Beheerder

- Ariën -

28/11/2024 23:22:29
Quote Anchor link
Jouw code met AJAX moet gewoon werken, of anders met fetch(), gezien dat nog praktischer is.
Houd wel rekening met het feit dat als de website geen CORS toestaat, dat de anvraag zal mislukken.

Serverside is daarom een stuk betrouwbaarder.
 
Paul Weiss

Paul Weiss

29/11/2024 08:35:28
Quote Anchor link
bedankt. fetch ben ik niet bekend mee. cors is dat van toepassing op fetch? of ook op ajax? wat is cors precies?
 
- Ariën  -
Beheerder

- Ariën -

29/11/2024 09:20:35
Quote Anchor link
CORS is niets meer dan een speciale header op een website, die aangeeft dat externe sites ermee mogen communiceren. En deze functies houden zich daaraan.

https://en.wikipedia.org/wiki/Cross-origin_resource_sharing?wprov=sfla1
Gewijzigd op 29/11/2024 09:26:58 door - Ariën -
 
Paul Weiss

Paul Weiss

29/11/2024 09:28:50
Quote Anchor link
cors is toch alleen van toepassing wanneer je controle wilt uitvoeren op een ander domein? dus stel domein A wil controleren of op domein B een bestand bestaat. dan zou je op domein B cors moeten instellen toch?

Cors is toch niet nodig op hetzelfde domein?
 
- Ariën  -
Beheerder

- Ariën -

29/11/2024 09:29:53
Quote Anchor link
Klopt, de externe domein moet CORS gebruiken.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.