Hoi allemaal,

ik kom er nu niet meer uit. heb alle php.net artikelen betreffende bestandsysteem doorgelopen maar krijg het niet voor elkaar.

wat ik wil bereiken.
ik haal via een externe site een xml bestand op.
deze wordt gegenereerd door een php bestand. dus het is op de externe site een download.
hierdoor kan ik hem niet uitlezen direct.

dus waarschijnlijk moet ik hem eerst opslaan op de server waar de php script draaien?
hoe kan ik deze wegschrijven naar een map.

file() fwrite() file_get_contents() al geprobeerd maar lukt me niet.

of kan ik hem gewoon openen en dan mijn dingen eruit halen die ik nodig heb. ?

heb het nodig voor dit gedeelte van de code
$context = stream_context_create(array(
    'http' => array(
        'header'  => "Authorization: Basic " . base64_encode("$usernamehttp:$passwordhttp")
    )
));
$data = file_get_contents($url, false, $context);
//$data = simplexml_load_string($url);

$data = simplexml_load_string($url);
echo "<pre>";
print_r($data);
echo "</pre>";
if($data) {
 echo "<pre>".print_r($data,true)."</pre>";
} else {
// de XML kan niet worden uitgelezen, toon de foutmeldingen!
      echo "XML-feed kan niet geladen worden:\n";
      foreach(libxml_get_errors() as $error) {
           echo "\t", $error->message;
      }
}
En ik denk dat het een beveiliging is. Ik raad aan om de website eigenaar te vragen. Pas je URL-aanroep in CURL eens aan naar login.php? Zie je dan wat meer?
ik ben graag eigenwijs he

is er een makkelijke manier om hem gewoon op te slaan ? of de inhoud in de database te stoppen en dan te verwerken. ?

de website eigenaar werkt er niet aan mee daarom dat ik het op deze manier doe, en dat werkt tot nu toe perfect alle data kan ik uitlezen en mee spelen. alleen de data die met een xml download wordt aangeboden niet. daarom dat ik vast loop

[size=xsmall]Toevoeging op 23/12/2020 10:51:00:[/size]

- Ariën - op 23/12/2020 10:46:20

En ik denk dat het een beveiliging is. Ik raad aan om de website eigenaar te vragen. Pas je URL-aanroep in CURL eens aan naar login.php? Zie je dan wat meer?


dan krijg ik de inlog pagina te zien.

maar als ik user_rss_feed.php doe waarvoor ik ook ingelogd moet zijn dan werkt het wel
Dan is de oplossing om het handmatig te downloaden, en zelf een script te maken waar je het bestand kan uploaden, waarna je het verwerkt.

Andere oplossingen zijn er niet als we geen inzicht hebben in waarom het niet lukt. Met cURL kan je wel POST-requests doen, maar zonder details over het inlogscherm kunnen we echt niks doen.
ik heb de indruk dat de header die jij meegeeft met de inloggegevens niet klopt.

Hoort dat niet bij zo'n inlog waarbij via htpasswd zo'n harde popup van de browser komt?

Hier staat op de site van die club gewoon een inlogform.

Ik zou eens een curlscript proberen dat daarop de juiste gegevens post en dan kijken wat je aan headers terug krijgt. Zou met name naar cookie / sessioncookie headers kijken.

En daarna onder gebruikmaking van die cookies nog eens de xml opvragen.

---
kijk anders ook eens wat je browser allemaal meestuurt als je de xml ophaalt.

Ik vermoed dat het elders wél werkt omdat daar gewoonweg een andere inlogmethode gebruikt wordt.


[size=xsmall]Toevoeging op 24/12/2020 16:57:03:[/size]

ik heb eens een account aangemaakt.

na inloggen kijg je inderdaad een sessioncookie: PHPSESSID: "iets"

Daarnaast krijg je na elke pagina aanroep een cookie genaamd "auth" daarin zit een value: "heel erg lange string".

Na elke aanroep verandert de value van dit cookie.
--
ik zou gaan voor een curl-post naar /account/login met als load:
password-remember: 0
email: jouw@email
password: jouwpassword

Daar komt dan een response op met een session cookie en genoemd auth cookie.

Die zou ik vervolgens meegeven met een curl-aanroep om de xml te downloaden.

Reageren