PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Benutzerauthentifizierung (http://www.selfphp.de/forum/showthread.php?t=25795)

TimRear 26.02.2016 15:08:36

Benutzerauthentifizierung
 
Hallo zusammen,

ich habe ein hoffentlich nicht zu aufwändiges Anliegen bezüglich eines PHP Scripts. Da ich nicht gerade die große Ahnung davon habe, frage ich mal in die Runde der Fachleute und bedanke mich bereits jetzt sehr für Eure/Deine Unterstützung!!!!

Es geht um eine Art Dyndns script - welches auch grundsätzlich funktioniert.
greift man beispielsweise auf "index.php?hostname=dyndns1.domain.tld" zu, wird die IP für den Hostname aktualisiert. Ich benötige jedoch mehrere Hostnames, welche mit unterschiedlichen Benutzernamen/Kennwörtern (oder einfacher ein Zugangstoken) aktualisiert werden können. Wie würdet Ihr das machen?

.htaccess ist für mich keine Lösung, da nicht jeder Benutzer jede Domain aktualisieren dürfen soll, sondern lediglich seine Eigene.

Hier das Script:
PHP-Code:

<?php

include 'mysql_config.php';

$dynDomains = array('dyndns1.domain.tld''dyndns2.domain.tld');

$newIP $_SERVER['REMOTE_ADDR'];
$DoUpdateFile "updatefile/doupdate";

if(!isset(
$_GET['hostname'])){
    die(
'Parameter "hostname" nicht gesetzt - Ihre WAN IP lautet:'.$newIP);
}
// Check if the requested domain is in our list of domains we want to keep updated.
if(! in_array($_GET['hostname'], $dynDomains)){
    die(
'Der angeforderte "hostname" wurde nicht für DynDNS freigegeben.');
}

// Check if IP is really an IP (should always be the case, but just to be safe...)
if($newIP == "" || !preg_match_all("/(\d{1,3}\.){3}\d{1,3}/"$newIP$matches )){
    die();    
}    

// We need to append a dot (.) to the end of the requested domain
$dyndns $_GET['hostname'] . '.';

$query "SELECT id, val FROM dns_recs WHERE host = '$dyndns' AND type = 'A';";

$result mysql_query($query);
$row mysql_fetch_assoc($result);

$rowId $row['id'];
$oldIP $row['val'];

if(
$oldIP == $newIP){
    echo 
"nochg\n".$newIP;
    die();
}

// Update IP
$updateQuery "UPDATE dns_recs SET val = '$newIP', displayVal = '$newIP' WHERE id = $rowId;";

$updated mysql_query($updateQuery ) or die (mysql_error());

$updateDomain $_GET['hostname'] . ";";
# Create do-update file to notice cron job to update the DNS entry
file_put_contents($DoUpdateFile$updateDomainFILE_APPEND);

echo 
"good\n".$newIP;

?>

Vielen Dank für Eure Denkansätze!

vt1816 26.02.2016 15:32:03

AW: Benutzerauthentifizierung
 
Hallo und willkommen hier im Forum.


Leider kann mit Deiner bisher gegebenen Erläuterungen Dein Problem/unsere Hilfe nicht klar erkannt werden.
Kannst Du mit wenigen verständlichen Worten umschreiben wo Dein Problem liegt und wie Du Dir unsere Hilfe vorstellst?

Was mit jedoch aufgefallen ist:
  • Übernimm nie ungeprüft Usereingaben ($_GET)
  • Verwende mysqli bzw. PDO - mysql ist veraltet

TimRear 26.02.2016 16:03:14

AW: Benutzerauthentifizierung
 
Vielen Dank für Deine Antwort, vt1816!

Genau genommen geht es um folgende Abfrage:
PHP-Code:

if(! in_array($_GET['hostname'], $dynDomains)){
    die(
'Der angeforderte "hostname" wurde nicht für DynDNS freigegeben.'); 

Ich möchte, dass hier zusätzlich ein Passwort (oder Authentifizierungstoken) abgefragt wird, welches vorher definiert wird und zu der jeweiligen Domain passt. Wie kann man das realisieren?

Beispiel: domain1 darf nur mit passwort1; domain2 nur mit passwort2 synchronisieren.


Zitat:

Übernimm nie ungeprüft Usereingaben ($_GET)
Verwende mysqli bzw. PDO - mysql ist veraltet
Auch hier danke ich Dir schon einmal sehr für die Hinweise!
Ich werde mich am Wochenende mal in das Thema einlesen, bevor ich unnötig viele Fragen stelle.


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:39:03 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.