Hoi,

Ik schets kort wat ik wil doen.
aan de ene kant, op mijn server een databank met daarin lijst van website's met start en einddatum
aan de andere zijde, op de verschillende website's ergens anders dan op mijn server uiteraard een kort stukje code die contact maakt met mijn database en nakijkt of de website nog ok is om mee verder te werken, of als de tijd verstreken is en deze dus stopt


<?php
session_start();
ob_start();
include("connect.php");

if (isset($_POST['webid'])){
	$sid = $_POST['webid'];
	$siteresult = mysql_query("SELECT * FROM website WHERE website_id = '$sid'");
	if (mysql_num_rows($siteresult)) {
		while (($prodrow = mysql_fetch_assoc($siteresult)) !== false){
	         	$websitestartdate = $prodrow['website_startdate'];
			$websiteenddate = $prodrow['website_enddate'];
				
			// duration of contract
			$startdate  = strtotime($websitestartdate);
			$enddate = strtotime($websiteenddate);
			$contractdays = ceil(abs($enddate - $startdate) / 86400);
			
			// days left
			$now = strtotime(date("Y-m-d H:m:s"));				
			if ($now > $enddate){
				// overdue
				$sitestatus = "Blocked";
			}else{
				// seems ok
				$sitestatus = "OK";
			}
		}
	}else {	
		// Nothing found
		$sitestatus = "Blocked";
	}
}else{
	// No ID found
	$sitestatus = "Blocked";
}
?>


heb dit getest met de get function en gewoon in de url aangeroepen en dit gedeelte werkt.

wat betreft het stukje code die op de verschillende site moet draaien heb ik al verschillende dingen geprobeerd via jquery post function, uren al naar een oplossing gezocht maar niets die werkt.

dus stel ik hier maar de vraag, hoe ik dat kan bekomen - dus bij start van de site even in 'externe database' kijken of mag verder gegaan worden of niet - zonder dat de gebruiker iets daarvan merkt.

graag jullie feedback

grtjs marc
En dan ben ik benieuwd wat POST doet, en waar je jQuery gebruikt terwijl je beter [php]file_get_contents[/php] kan gebruiken.

Anyway, hier is de code van mijn licentie-API (die je beter kan herschrijven naar MySQLi). Ikzelf gebruik dit niet meer, maar dit script geeft aan de hand van een key in de config aan of er een licentie is en op wiens naam die staat. Een check of een site gebruikt mag worden is er niet, omdat ik het niet nodig vond.

api.php voor op de externe server

<?php
mysql_connect("localhost","","") or die("MySQL login is incorrect.");
mysql_select_db("clients") or die("Database is incorrect");

if (!isset($_GET['username'],$_GET['serial'], $_GET['host'])) {
echo "FIELDS_ARE_EMPTY";
} else {			
$sql = "SELECT 	username, 
		serial, 
		hostname,
		name,
		address,
		telephone
	FROM 	clients 
	WHERE	`username` = '".mysql_real_escape_string($_GET['username'])."' 
	AND 	serial = '".mysql_real_escape_string($_GET['serial'])."' 
	AND	hostname = '".mysql_real_escape_string($_GET['host'])."'";
						
$license_result = mysql_query($sql) or die(mysql_error()."<br>".$sql);
	if(mysql_num_rows($license_result)){
	$license = mysql_fetch_assoc($license_result);
	echo "OK";
		if(isset($_GET['ownerdetails'])) {
		echo " - ".$license['name']."\n".$license['address']."\n".$license['telephone'];
		}
	} else {
	echo "NOT_OK";
}
}
?>


En de controle in de admin om de gegevens op te halen vanuit de CMS client.
licentie.php

<?php
$license_url = "http://api.DOMEIN_VAN_MASTERSEVER.nl/api.php?username=".$settings['licence_name']."&serial=".$settings['license_key']."&host=".$_SERVER['HTTP_HOST'];
$license_owner = $license_url."&ownerdetails=true";
$license_connection = file_get_contents($license_url);
$license_owner_connection = file_get_contents($license_owner);
if ($license_connection == "OK") {
	$status = "<span style='color:green'>Licentie goedgekeurd</span>";
} else {
				$status = "<span style='color:red'>Licentie incorrect, neem a.u.b. contact op met de sitebouwer.</span>";
} 

echo $status;

if($license_connection=="OK") {
		echo'Licentie eigenaar:<br />'.nl2br(substr($license_owner_connection,5))
	} else {
		echo 'Er is een probleem aangetroffen in de licentie van het CMS';
	} 
?>
@Ariën, maar die beveiliging is toch kinderlijk eenvoudig te omzeilen? Verander in licentie.php voor de CMS-client twee keer == "OK" in != "OK" en een licentie die niet okay is, wordt okay.
Tenzij hij encoded is, wat zeker handig is.
dank je voor de feedback

[size=xsmall]Toevoeging op 29/06/2016 13:44:32:[/size]

Uiteraard is beveiliiging nodig, aan de andere kant, jullie zijn allemaal experts, mensen die weten wat ze doen, de grote massa echter niet, en het is/was ook niet de bedoeling dit in een pro omgeving te gebruiken.

Maar uiteraard beveiliging moet wel, wou alleen zeggen we moeten ook ni 'zwart' denken

Alvast iedereen hartelijk bedankt voor zijn bijdrage
Ozzie PHP op 28/06/2016 15:57:44

@Marc

Kan de gebruiker/eigenaar van de website zelf bij de code van de website?

Dit lijkt mij nog steeds een relevante vraag.

Daarom is het verstandig om, als het bij de gebruiker gehost wordt, om het in ieder geval te encoden met Ioncube of Zend Guard. De webhosting moet dat wel weer ondersteunen, maar vaak is het geen probleem.

Of als je het zelf host, dan kan je de hele controle buiten de hele Admin buiten de webroot zetten zodat de gebruiker er niet bij kan. Uiteraard zijn gebruiksvoorwaarden om je code te beschermen ook zeker handig. Mocht het ooit uitlekken of iemand de boel hacken, dan sta je juridisch zeer sterk.
@ Thomas van de Heuvel

In eerste instantie ja, als hij door de duizenden lijnen code wilt sneuffelen
Maar zoals Arien reeds vermelde - best encoden

Meestal is er ook nooit een probleem en mocht zich da voordoen is het ook ni de bedoeling groot scherm te tonen met melding zo van jij moet nog betalen of dergelijke - kan subtiel waardoor lijkt dat er ergens een kleine error is en contact moet opgenomen worden met de maker van, of eigenaar van, of beheerder of hoe het ook maar ingezet wordt

Bvb mijn wordpress installatie's beschikken over een kleine snippet die ingeval gebruiker zijn eigen delete of in de role setting rammeld en zichzelf uitsluit, er toch via via terug in de backend toegang kan bekomen worden - gebruiker is daarvan ook op de hoogte, wettelijke verplichting
Realiseer je wel dat je zelf de noodzakelijkheid van encoding introduceert door de opzet die je gebruikt (er toegang tot de broncode wordt verschaft).

Persoonlijk zou ik eerst proberen het probleem weg te nemen in plaats van het probleem op te lossen wat ik zelf introduceer. Dit laatste is toch een beetje voortborduren op een verkeerde beslissing.

Reageren