PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Eine newbie Frage oder auch nich!


Der Neue
17.06.2002, 14:20
Ich will das der User, wenn er sich in seinen Account einloggt Punkte gutgeschrieben kriegt.
Die Punkte soll er in seinen Account einsehen können.
Wenn er einegewisse Punktzahl erreicht hat, soll das dem Admin gemeldet werden.
Is das schwer zu proggen???
Wo finde ich Infos wie mann sowas proggt???


blue.tiger
17.06.2002, 14:39
Du hast verschiedene Möglichkeiten das zu verwirklichen. Entweder du verwendest SQL oder du speicherst die Userinfos in txt-Dateien (o.ä.). Die 1.Variante ist wohl besser zur Verwaltung, die 2. eher einfacher. So schwer zu realisieren ist das nicht; Infos dazu bekommst du unter http://www.php.net/manual/de/ .
Zum Einstieg in PHP ist das von der Schwierigkeit her villeicht nicht unbedingt geeignet!

cu Blue Tiger

Der Neue
17.06.2002, 14:48
Wenn ichs inner txt speicher kann die Daten doch jeder einsehn oder?????

blue.tiger
17.06.2002, 15:24
Jap, das ist dann auch der Vorteil an txt. Bei SQL bräuchtest du andere PHP-Scripte um die gespeicherten Daten/Informationen einzusehen.

cu Blue Tiger

Der Neue
17.06.2002, 15:28
hab mich dann für Text entschieden und wie macht ´mans nu am besten
PS: Möchte wenn eine gewisse Punktzahl erreicht its mail bekommen.

blue.tiger
17.06.2002, 15:54
Also...


<?

//Überprüfen ob Datei (mit Userzahl) existiert, wenn vorhanden Öffnen und Auslesen der Datei
if(file_exists("$user.php")) {
require($user.php);
}

//Neue Punktzahl (+1->ein Punkt mehr pro Login)
$zahl=$zahl+1;

//Löschen des alten und Speichern des neuen Punktestands
unlink("$user.php");
$save = fopen("$user.php","a+");
fputs($save,"<?\n
\$zahl = \"$zahl\";\n?>");
fclose($save);

//Nennen des neuen Punktestandes
echo "Du hast $zahl Punkte";
?>


Dabei zu beachten ist:
1. Die Variable User ($user) muss z.B. durch ein Formular gegeben sein (Feldname: user) oder durch eine Variablenangabe im Header gegeben sein (z.B. www.adresse.de/diesedatei.php?user=administrator).
2. Die Datei (die den obengenannten Quelltext enthält) muss die Endung .php haben!

cu Blue Tiger

Der Neue
17.06.2002, 16:05
kann ich da auch ne reloadsperre von 2 stunden einbauen??

blue.tiger
20.06.2002, 15:27
Gehen tut es auf jeden Fall, aber ich kenn mich mit PHP leider noch nicht soo gut aus, dass ich dir sagen kann wie (bestens in einer umständlichen/unübersichtlichen Variante).

cu Blue Tiger

Caminus
20.06.2002, 15:59
Wenn die Alternative besteht eine Datenbank zu benutzen, würde ich dir die ans Herz legen. Geht einfacher, ist schneller und ich empfinde es als Nachteil das sich jeder die Daten von anderen Usern angucken kann.

Wenn du nun eine Tabelle für deine User angelegt hast,
Id | Name | mail | Konfektionsgroesse | Timestamp | Punkte

Wenn sich jetzt jemand eingelogt hat, überprüfst du am Timestamp, wann er das letzte Mal da gewesen ist. Wenn dein Timestamp über 2 Stunden zurück liegt, gibst du ihm einen Punkt dazu.

$time = time();
$result = mysql_query("select * from table where timestamp < $time+60*60*2");
if(mysql_num_rows($result) > 1)
mysql_query("update table set Punkte=Punkte+1");

Wenn du nun noch überprüfen willst, ob ein User eine bestimmte Punktzahl hat.

$punktzahl = 50;
$result = mysql_query("select * from table where Punkte = '$punktzahl'");
while( $row = mysql_fetch_array($result) )
{
$betreff = "Punktzahl";
$message = "User ".$row[name]." hat ".$row[punkte];
mail("admin@admin.com", $betreff, $message, "FROM: ". $row[Name]." <".$row[mail].">");
}

---------------------------------------------------------------------------------
Wenn du das Ganze nun aber doch über ne Textdatei machen willst, dann würde ich folgende Methode vorschlagen.
Aufbau deiner Textdatei:
Name##Mail##Konfektionsgroesse##Timestamp##Punkte


$array = file("user.txt");
$open = fopen("user.txt", "w+");
for($i=0;$i < sizeof($array); $i++)
{
$time = time();
$time = $time+60*60*2;
$teile = explode("##", $array[$i]);
if( $teile[3] < $time )
$teile[4]++;
if( $teile[4] == 50 )
mail("admin@admin.com", "Punkte", "User ".$teile[0]." hat ".$teile[4]. " Punkte.", "FROM: ".$teile[0]." <".$teile[1].">");
$array[$i] = $teile[0]."##".$teile[1]."##".$teile[2]."##"[$teile[3]."##".$teile[4];

fputs($open, $array[$i]);
}
fclose($open);
?>