ich habe ein php script das prüft ob ein user vorhanden ist jetzt möchte ich noch die variable an $check = file_get_contents (‚http://domain.com/’.$username.‘ anhängen um zu prüfen ob die url besteht.
das ist mein script aber leider geht nur die datenbank abfrage danach gehts nicht weiter.
<?php mysql_connect($mysql_hostname, $mysql_user, $mysql_password) or die("Opps some thing went wrong on mysql_connect"); mysql\_select\_db($mysql\_database) or die("Opps some thing went wrong on mysql\_select\_d");
if(isSet($\_POST['username']))
{
$username = $\_POST['username'];
$username = mysql\_real\_escape\_string($username);
$sql\_check = mysql\_query("SELECT name FROM ic1\_user WHERE name='$username'")or die("error query");
if(mysql\_num\_rows($sql\_check))
{
echo ''.$username.' is already in use.'; } else { $check = file_get_contents('http://domain.com/user/'.$username.'')
Hallo,
die daten kommen aus ein eingabe formular, nach der eingabe prüft ein script ob es den user schon inder datenbank giebt, danach soll geprüft werden ob es den user unter http://domain.com/user/xxxxx/ vorhanden ist.
hierzu benutze ich die Methode ($check = file_get_contents) leider kann ich die user variable '.$username. nicht am ende hinzufügen. wie im phpbeispiel gezeigt wird
file_get_contents(‚http://www.example.com/‘, $context);
eine rewrite ist nicht gesetzt
wenn ich den username selbst einsetzte funktioniert mein script
ein fehlerprotokoll hab ich leider nicht, ich hab mit php nicht soviel erfahrung
file_get_contents braucht allow_url_fopen wenn du URLs verwenden willst. Ist das aktiv?
PHP-Fehler sollten irgendwo protokolliert werden, oft im Logfile des Servers.
Es ist wichtig, dass du das findest und anschaust, da hier eine Menge Hinweise enthalten sein können.
Bitte erläutere mal, was du an Verhalten des Skriptes erwartest und was wirklich passiert…
Die xxx stehen für den username die der user im eingabefeld eingiebt.
Schreibe ich den username dierekt rein funktuniert das script.
Funktion: überprüft ob der username schon regestriert ist und ob er auf der domain existiert : http://beispieldomain.com/user/xxxxx/
was für mein projekt sehr wichtig ist.
http://domain.com/user/xxx
besteht aus mehreren Teilen, die der Server nach und nach auswertet.
http und Domain sowie TLD funktionieren wohl.
Aber dann wirds interessant.
/user/ ist zunächst mal nur ein Verzeichnis auf dem Webserver mit dem Namen „user“.
xxx ist eine dortige Datei. Mehr erstmal nicht.
Erst durch rewriting und / oder Skripte kann da etwas anderes liegen als eine Datei.
Was passiert, wenn du http://domain.com/user/xxx direkt im Browser aufrufst?
Mit
a) einem existierenden User und
b) einem nicht existierenden User
Wo in der Doku steht das, was du schreibst? Ich erinnere mich gerade nicht, das gesehen zu haben.
Ich verstehe noch immer nicht genau, was genau nicht funktioniert.
Kannst du bitte mal schildern, was du erwartest, wenn du einen vorhandenen Benutzer übergeben hast und was dann genau passiert?
Und dann nochmal für einen nicht vorhandenen Benutzer?
Wozu überhaupt diese Prüfung mit der URL? Reicht die Datenbank nicht?
Strpos gibt dir immer die erste Position des gesuchten String zurück und nie true, daher macht es nicht so viel Sinn auf True zu prüfen.
Darüber hinaus gibt der Server ein 404 Fehler zurück, wenn man er eine Datei nicht gefunden hat, ob da im Text jetzt Sorry steht kann ich nicht sagen, müsste ich testen.
Sichere wäre eine Funktion wie:
function url_exists($url) {
// Version 4.x supported
$handle = curl_init($url);
if (false === $handle)
{
return false;
}
curl_setopt($handle, CURLOPT_HEADER, false);
curl_setopt($handle, CURLOPT_FAILONERROR, true); // this works
curl_setopt($handle, CURLOPT_NOBODY, true);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, false);
$connectable = curl_exec($handle);
curl_close($handle);
return $connectable;
}
Die gibt prüft ob eine URL existiert. Auch gefunden in der php Doku zu file_exists, meiner Meinung nach immer noch der bessere weg über das lokale filesystem zu prüfen ob das Verzeichnis existiert.
zu erst einmal, die Art der Datenbankabfrage
ist nicht mehr aktuell und könnte in den nächsten PHP-Versionen wegfallen.
Zumal diese recht unsicher ist.
Nun zum eigentlichem Problem.
Eine Link-Überprüfung an Hand von filegetcontents oä. funktioniert nicht,
da nicht auf das eigene Medium zugegriffen wird.
gehe mal das script schritt für schritt durch.
dazu kann man var_dump(); verwenden.
als parameter gibst du immer die variable oder funktion die du prüfen möchtest ein, dann erhälst du eine ausgabe mit dem zustand/eigenschaften der variable an diesem punkt. mit einem nachgefügten die; kannst du die weitere ausführung des scriptes „anhalten“
Versuche mal (probehalber) an den Anfang der PHP-Datei (im ersten HP-Block) folgende Befehle einzutragen:
error_reporting(E_ALL);
ini_set(„display_errors“, 1);
Das sollte nur zu Testzwecken und nicht dauerhaft angeschaltet sein!
Nun die Seite nochmal aufrufen, dann solte er „Warnings“ und „Errors“ anzeigen. Wichtig: „Notice: Undefined index:“ kannst Du ignorieren. Das bedeutet nur, dass die genannte Variable nicht sauber vordefiniert wurde, sondern „einfach so benutzt“.
Nachdem Du die Fehler gesehen hast, die Befehle wieder rauslöschen oder mit „//“ auskommentieren.