Kundendaten via php ändern

Hier können Sie Fragen bezüglich der Kundenverwaltung stellen.
Benutzeravatar
JuergenEbbing
webEdition Partner
webEdition Partner
Beiträge: 246
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Ramsdorf
Kontaktdaten:

Kundendaten via php ändern

Beitragvon JuergenEbbing » So 22. Nov 2009, 14:02

Hallo,

wie komme ich per php an Kundendaten?
über we:customer schaffe ich es wohl die Daten auszugeben, aber ich möchte die Daten auch über php ändern können.

Anwendungsbeispiele:
Zähler beim Aufrufen eines Kundenprofils erhöhen.
oder
Kunden nach Registrierung eine Mail zuschicken mit einem Link auf eine Seite, auf der dann der User sein Profil freigeben muss. "Klicken Sie auf diesen Link um Ihre Anmeldung zu verfollständigen".... so kann ich sicherstellen, das die Mailadresse korrekt ist.

Mir gelingt es aber nicht die Daten per we:setVar oder per php für ein eigenes Script zu nutzen.

Danke für Eure Tipps
------------
da bin ich ja mal gespannt,
ob ich neugierig bin
------------

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1825
Registriert: Di 7. Mär 2006, 16:50
Wohnort: Wien
Kontaktdaten:

Re: Kundendaten via php ändern

Beitragvon WBTMagnum » So 22. Nov 2009, 17:32

hi jürgen,

ganz low-level kannst du folgendes machen um daten auszugeben:

Code: Alles auswählen

$query = "SELECT * FROM `tblWebUser` WHERE ....";
$result = mysql_query($query) or die("Fehlgeschlagen: " . mysql_error());
$row = mysql_fetch_array($result);
if (isset($row["ID"]) && $row["ID"] =! "")
{
  /* die gewünschten daten ausgeben */
  ...
}
analog dazu funktioniert die manipulation:

Code: Alles auswählen

$query="UPDATE tblWebUser SET ... WHERE ...";
$result = mysql_query($query);
eventuell gibt es dafür auch schon funktionen die du für diese zwecke nutzen kannst. einfach mal im source schauen.


HTH,
Sascha

Benutzeravatar
JuergenEbbing
webEdition Partner
webEdition Partner
Beiträge: 246
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Ramsdorf
Kontaktdaten:

Re: Kundendaten via php ändern

Beitragvon JuergenEbbing » Mi 25. Nov 2009, 12:39

Spitze, das hat funktioniert.

Jetzt hapert es aber wieder an meinen php Kenntnissen.

Ich habe ein tolles Counter-Skript mit IP-Sperre gefunden, das allerdings mit einer Textdatei arbeitet und nicht per Datenbank. Ich habe nun versucht das Script so umzuschreiben, dass die Counter-Daten für x-beliebig viele Kundendaten nicht in zig Textdokumenten gespeichert werden, sondern direkt in die WE-Datenbank, so das ich diese immer passend zum Kunden abgespeichert habe. Aber ich komme hier irgendwie nicht weiter.

Hier das originalscript:

Code: Alles auswählen

<?
/////////  FlatFileCounter v1.0     //////////
//     copyright & written in Aug 2003      //
//     by Lukas Stalder                     //
//     contact: flounter@planetluc.com      //
//     Visit www.planetluc.com!             //
//               enjoy it!                  //
//////////////////////////////////////////////

/* 

Installation

1. change the $expire variable's value to whatever you want
2. upload the 2 files (flount.php, flount.log)
3. chmod the flount.log file to 777
4. include the flount.php wherever you want to cont your visits
   by inserting   <? include('flount.php');?>   into your site
   
   
  that's it!

*/



$expire= "50";  					// ip expires after $expire seconds
$expire= $GLOBALS['expire'];
global $expire;
echo $expire;
echo  $GLOBALS['expire'];  					// ip expires after $expire seconds
echo "<br>WARTEZEIT: <br>".$expire."<br>";
echo $expire;

$logfile= "flount.log"; 		// file where visits and ip logs are stored

// *************************** don't change anything below this line *************************

$incpath=substr(__FILE__, 0, strrpos(__FILE__, "/")+1);
$logfile=$incpath.$logfile;
$ip= getenv('REMOTE_ADDR');
$visits=0;
$badhit= false;
$now= time();


$ips = array(array());
if (file_exists($logfile)){
	if ($loggedips=file($logfile)){
		$visits=trim($loggedips[0]);
echo "<br>VISITS: ".$visits;
		for ($i=1; $i< count($loggedips); $i++){
			$loggedips[$i]=trim($loggedips[$i]);
echo "<br>Logged: ".$loggedips[$i];
			$ips[$i] = explode('||', $loggedips[$i]);
			if (($ips[$i][0]==$ip) && ($now-$ips[$i][1]< $expire)) 
				$badhit= true;
		}
		if ($badhit)
			echo "<br>badhit: ".$visits;
		else{
			$visits++;
			$fp= fopen($logfile, 'w');
			fputs($fp,"$visits\n");
			for ($i=1; $i< count($loggedips); $i++){
				if ($now-$ips[$i][1] < $expire)
					fputs($fp, $ips[$i][0]."||".$ips[$i][1]."\n");
			}
			fputs($fp, "$ip||$now\n");
			fclose($fp);
			echo "<br>newhit: ".$visits;			
		}
	}
}else
	echo "logfile is missing";



?>
Und so sieht das Ganze bei mir aus, wenn ich die Log-Datei in die Kundenverwaltung im Feld "COUNTin" schreiben möchte:

Code: Alles auswählen

$we_cid = "5";

/* Aktuellen Stand des Zaehlers auslesen */
$DB_WE->connect;
$abfrage  = mysql_query("SELECT COUNTin FROM tblWebUser WHERE ID='$we_cid'");
$ergebnis = mysql_fetch_assoc($abfrage) or die("Diese ID existiert nicht");

$expire= "100";  					// ip expires after $expire seconds
$ip= getenv('REMOTE_ADDR');
echo "<br>Ihre IP lautet: ".$ip."<br>";
$badhit= false;
$now= time();
$logfile = $ergebnis;


$loggedips = $ergebnis; 

		$visits=trim($loggedips[0]);
		for ($i=1; $i< count($loggedips); $i++){
			$loggedips[$i]=trim($loggedips[$i]);
			$ips[$i] = explode('||', $loggedips[$i]);
			if (($ips[$i][0]==$ip) && ($now-$ips[$i][1]< $expire)) 
				$badhit= true;
		}
		if ($badhit)
			echo "<br>Sie wurden bereits gezählt: ".$visits;
		else{
			$visits++;
			$alteIPS = $loggedips;
			$fp .= "$visits\n";
			$fp .= "$alteIPS\n";
			for ($i=1; $i< count($loggedips); $i++){
				if ($now-$ips[$i][1] < $expire)
					$fp .= $ips[$i][0]."||".$ips[$i][1]."\n";
			}
			$fp .= "$ip||$now\n";
		}


mysql_query("UPDATE tblWebUser SET COUNTin = '$fp' WHERE ID='$we_cid'");
Wäre sehr dankbar wenn jemand weiterhelfen könnte. Vielleicht ist das ja auch für den ein oder anderen User ein interessanter Lösungsansatz um bestimmte Aufrufe in Ihrer Häufigkeit zu begrenzen.
------------
da bin ich ja mal gespannt,
ob ich neugierig bin
------------

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1825
Registriert: Di 7. Mär 2006, 16:50
Wohnort: Wien
Kontaktdaten:

Re: Kundendaten via php ändern

Beitragvon WBTMagnum » Mi 25. Nov 2009, 14:37

Hi,

Ich hab mir das jetzt nicht im Detail angeschaut, aber wenn ich dich richtig verstehe, soll für einen Benutzer der Zugriff automatisch gesperrt werden, wenn in der Zeit t1 mehr als x Zugriffe erfolgen?

Wenn dem so ist, kannst du dir überlegen die Zugriffe in einer eigenen Tabelle in der Datenbank abzulegen:
  • UID
  • Timestamp
Über eine MySQL Query kannst du damit relativ einfach herausfinden, ob ein Benutzer den letzten t1 Sekunden mehr als x Mal zugegriffen hat und beim User eine temporäre Sperre bis zum Zeitpunkt t2 festlegen. Bei Zeiten müsste man natürlich die Tabelle von alten Logs befreien, aber das ist eh trivial.

HTH,
Sascha

Benutzeravatar
JuergenEbbing
webEdition Partner
webEdition Partner
Beiträge: 246
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Ramsdorf
Kontaktdaten:

Re: Kundendaten via php ändern

Beitragvon JuergenEbbing » Mi 25. Nov 2009, 14:52

Hi Sascha,

danke - für die Antwort.
Wie das mit der eigenen Tabelle funktioniert hatte ich schon in einigen Tutorials gelesen. Allerdings möchte ich das unbedingt in dem gleichen Datensatz tun, in dem die Userdaten stehen um nicht auf eine weitere Tabelle zurückzugreifen. Nur wie ich das mit dem Skript von oben hinbekomme weiß ich nicht. Irgendwie kriege ich das mit dem Aufzählen, Arrray etc. nicht auf die Kette.
------------
da bin ich ja mal gespannt,
ob ich neugierig bin
------------


Zurück zu „Kundenverwaltung“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 12 Gäste