ilch Forum » Ilch Clan 1.1 » Module und Modifikationen » Benutzer soll selbst programmierten Menö

Geschlossen
  1. #1
    User Pic
    Dreamhacked Mitglied
    Registriert seit
    16.03.2013
    Beiträge
    3
    Beitragswertungen
    0 Beitragspunkte
    Hallo liebe Community,

    ich habe mir einen eigenen Anmeldeskript für einen Gameserver (Minecraft mit Authme) programmiert.
    Diesen habe ich jetzt in Ilch integriert bekommen.
    Jedoch soll jeder Nutzer diese Seite nur einmal öffnen können.
    Wenn er sie erneut öffnet, soll nur eine Naricht angezeigt werden. (z.B. Du bist bereits freigeschalten.)

    Dies möchte ich machen, damit der Skript nicht missbraucht wird, da der Forumaccount bei unserem Server Pflicht ist.
    Ich weis, ist nicht gerade Spieleranziehend, aber die Serverleitung will das so.

    Nun meine Frage, wie kann ich nun den aktuell angemeldeten User herausfinden und dies in meinen Skript integrieren?

    <?php 
    defined ('main') or die ( 'no direct access' );
    $um = $menu->get(1);
    if ($menu->getA(1) == 'W') {
      $poll_id = escape ($menu->getE(1), 'integer');
    	$radio = escape ($_POST['radio'], 'integer');
    		$fraRow = db_fetch_object(db_query("SELECT * FROM prefix_poll WHERE poll_id = '".$poll_id."'"));
    	  $textAr = explode('#',$fraRow->text);
    	  if ($fraRow->recht == 2) {
    		  $inTextAr = $_SESSION['authid'];
    		} elseif ($fraRow->recht == 1) {
    		  $inTextAr = $_SERVER['REMOTE_ADDR'];
    		}
    		if ( !in_array ( $inTextAr , $textAr ) ) {
    			$textAr[] = $inTextAr;
    		  $textArString = implode('#',$textAr);
          db_query('UPDATE `prefix_poll` SET text = "'.$textArString.'" WHERE poll_id = "'.$poll_id.'"');
    		  db_query('UPDATE `prefix_poll_res` SET res = res + 1 WHERE poll_id = "'.$poll_id.'" AND sort = "'.$radio.'" LIMIT 1') or die (db_error());
    		}
    }
    $title = $allgAr['title'].' :: '.$lang['vote'];
    $hmenu = $lang['vote'];
    $design = new design ( $title , $hmenu );
    $design->header();
    if($do==1)
    { 
    	$verbindung = mysql_connect("XXXXX", "XXXXXX" , "XXXXXX")
    	or die("Verbindung zur Datenbank konnte nicht hergestellt werden");
    	mysql_select_db("XXXXXXX") or die ("Datenbank konnte nicht ausgewählt werden");
    	$username = $_POST["username"];
    	$passwort = $_POST["passwort"];
    	$passwort2 = $_POST["passwort2"];
    	if($passwort != $passwort2 OR $username == "" OR $passwort == "")
    	{
    		echo"
    			<form name=\"eingabeform\" ACTION='index.php?test' METHOD='POST'>
    				<ul>
    					<li>
    						<p>Eingabefehler. Bitte alle Felder korekt ausfüllen.</p>
    					</li>
    					<li>
    						<p>Dein Username:</p>
    						<input type='text' name='username' maxlength='50' size'24'></input>
    					</li>
    					<li>
    						<p>Dein Passwort:</p>
    						<input type='password' name='passwort' maxlength='50' size'24'></input>
    					</li>
    					<li class='long'>
    						<p>Passwort wiederholen:</p>
    						<input type='password' name='passwort2' maxlength='50' size'24'></input>
    					</li>
    						<input style=\"font-size:10px\" type='hidden' name='do' value='1'>
    						<input style=\"font-size:10px;width:170px\" type='submit' name='send' value='abschicken'>
    					</input>
    				</ul>
    			</form>
    		";
    	}
    	$passwort = md5($passwort);
    	$result = mysql_query("SELECT id FROM authme WHERE username LIKE '$username'");
    	$menge = mysql_num_rows($result);
    	if($menge == 0)
    	{	
      		$eintrag = "INSERT INTO authme (username, password) VALUES ('$username', '$passwort')";
     	  	$eintragen = mysql_query($eintrag);
    		if($eintragen == true)
    		{
    			echo "Registrierung erfolgreich";
    		}
    		else
    		{
    			echo"
    				<form name=\"eingabeform\" ACTION='index.php?test' METHOD='POST'>
    				<ul>
    					<li>
    						<p>Fehler beim Speichern des Benutzernames. Bitte erneut versuchen.</p>
    					</li>
    					<li>
    						<p>Dein Username:</p>
    						<input type='text' name='username' maxlength='50' size'24'></input>
    					</li>
    					<li>
    						<p>Dein Passwort:</p>
    						<input type='password' name='passwort' maxlength='50' size'24'></input>
    					</li>
    					<li class='long'>
    						<p>Passwort wiederholen:</p>
    						<input type='password' name='passwort2' maxlength='50' size'24'></input>
    					</li>
    						<input style=\"font-size:10px\" type='hidden' name='do' value='1'>
    						<input style=\"font-size:10px;width:170px\" type='submit' name='send' value='abschicken'>
    					</input>
    				</ul>
    			</form>
    			";
    		}
    	}
    	else
    	{
    		echo"
    			<form name=\"eingabeform\" ACTION='index.php?test' METHOD='POST'>
    				<ul>
    					<li>
    						<p>Benutzername schon vorhanden. Bitte den im Forum verwendeten Username verweden.</p>
    					</li>
    					<li>
    						<p>Dein Username:</p>
    						<input type='text' name='username' maxlength='50' size'24'></input>
    					</li>
    					<li>
    						<p>Dein Passwort:</p>
    						<input type='password' name='passwort' maxlength='50' size'24'></input>
    					</li>
    					<li class='long'>
    						<p>Passwort wiederholen:</p>
    						<input type='password' name='passwort2' maxlength='50' size'24'></input>
    					</li>
    						<input style=\"font-size:10px\" type='hidden' name='do' value='1'>
    						<input style=\"font-size:10px;width:170px\" type='submit' name='send' value='abschicken'>
    					</input>
    				</ul>
    			</form>
    		";
    	}
    }
    else
    {
    	echo"
    		<form name=\"eingabeform\" ACTION='index.php?test' METHOD='POST'>
    		<ul>
    		<li>
    		<p>Dein Username:</p>
    		<input type='text' name='username' maxlength='50' size'24'></input>
    		</li>
    		<li>
    		<p>Dein Passwort:</p>
    		<input type='password' name='passwort' maxlength='50' size'24'></input>
    		</li>
    		<li class='long'>
    		<p>Passwort wiederholen:</p>
    		<input type='password' name='passwort2' maxlength='50' size'24'></input>
    		</li>
    		<input style=\"font-size:10px\" type='hidden' name='do' value='1'>
    		<input style=\"font-size:10px;width:170px\" type='submit' name='send' value='abschicken'>
    		</input>
    		</ul>
    		</form>
    	";
    }
    
    $design->footer();
    
    
    
    ?>


    Falls jemand auch allgemeine Verbesserungsvorschläge hat, bin ich offen diese umzusetzen.

    gesperrtes Bild


    gesperrtes Bild

    Dies sind die aktuellen Fehlermeldungen, da die Seite früher nicht in Ilch integriert war.

    danke schonmal für eure Antworten.

    grüße Dreamhacked

    Technik-Admin bei Duesterwald-Gameservers.de

    P.S. ich bin leider erst anfänger, was PHP angeht.

    betroffene Homepage: duesterwald-gameservers.de


    Zuletzt modifiziert von Dreamhacked am 16.03.2013 - 22:20:37
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Naja ich hätte so einige, da du aber ja selbst schreibst, dass du erst Anfänger bist, ich versuche mal zu schreiben, du kannst ja dann sagen, wenn du etwas nicht verstehst.

    Du hast als Vorlage die Umfrage benutzt und da jetzt Code drin, der nicht mehr verwendet wird. (Zeile 4 bis 20)

    Bei $title und $hmenu kannst du noch das $lang['vote'] durch einen Text, der dir beliebt ersetzen.

    Weiter solltest du ein Template einsetzen und nicht die Formulare direkt in die php Datei setzen. Dies wird bei vielen anderen Ilch"sachen" schon so gemacht. Dann muss du auch keine Anführungszeichen escapen etc.
    Da dein Formular keine Variablen braucht, sollte das auch sehr einfach zu machen sein.

    Du kannst mit if (loggedin()) prüfen, ob der User überhaupt eingeloggt ist und nur dann das Formular anzeigen (ggf. kann das aber auch über die Navigation eingeschränkt werden)

    Weiter willst du ja, dass es pro User nur einmal möglich ist, sich da einzutragen. Dazu solltest du die ilch user-id mit in der authme Tabelle speichern, müsstest dafür ein weiteres Feld hinzufügen.

    Die BenutzerId des angemeldeten Benutzers steht in der Sessionvariable $_SESSION['authid'], mit der könntest du dann auch Abfragen, ob schon ein Eintrag dieses Benutzers in der Tabelle steht und nur wenn dies nicht der Fall ist, das Formular anbieten, oder alternativ zu ermöglichen seinen alten Eintrag zu überschrieben.


    Zuletzt modifiziert von Mairu am 17.03.2013 - 10:02:03
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    1 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Dreamhacked Mitglied
    Registriert seit
    16.03.2013
    Beiträge
    3
    Beitragswertungen
    0 Beitragspunkte
    Hi,

    danke für die schnelle Antwort.

    Ja, da hast recht, mit der Vorlage ;-)
    Ich dachte mir, dass ich das lieber mal drinnen lasse, da ich eben relativ wenig Erfahrung habe, wenn es um integrieren in bereits vorhandene Seiten geht.
    Ich bin eher der Coder, der die CRON-Jobs schreibt ;-)
    Deswegen auch das Missbrauchen der Echo Funktion...

    Wenn ich also die $_SESSION['authid'] mit in die DB übergebe, sollte es möglich sein, herauszufinden, ob der User sich bereits registriert hat?
    Also:
    INSERT INTO authme (username, password, userid) VALUES ('$username', '$passwort', '$_SESSION['authid']')


    Und dann enstprechend vorher eine Abfrage machen, ob die Userid schon in der DB steht und entsprechend die Ausgabe ändere.

    Gibt es eigentlich so ein Dokument, wo sämtliche Variablen, etc drin steht?

    Und wie meinst du Template?
    Gibt es da schon vorgefertigte Seiten, welche ich da modifizieren kann?


    grüße Dreamhacked


    Zuletzt modifiziert von Dreamhacked am 17.03.2013 - 18:36:04
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Revolution Hall Of Fame
    Registriert seit
    14.08.2006
    Beiträge
    1.688
    Beitragswertungen
    109 Beitragspunkte
    Ein Template hilf dir Code und Layout zu trennen lachen

    Was dir sicherlich hilft:
    - Die DOKU : externer Link
    (Da steht zu allem schonmal etwas)

    - Templates : externer Link
    (Toller Beitrag von Rock@Wulf)

    Schau dir am besten mal einfache Content-Seiten an, wie z.B.
    include/content/history.php
    und
    include/templates/history.htm

    Das in verbindung mit dem Beirtag von Rock hilft sicherlich, zum Thema Templates.


    Zuletzt modifiziert von Revolution am 22.03.2013 - 03:28:54
    Kreativ, modern, Conversion und Usability optimiert
    individuelles Webdesign für ein optimales Erscheinungsbild
    404studios
    1 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Dreamhacked Mitglied
    Registriert seit
    16.03.2013
    Beiträge
    3
    Beitragswertungen
    0 Beitragspunkte
    danke für die Antworten.

    Hat mir sehr geholfen.

    funktioniert jetzt alles super gut.
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Module und Modifikationen

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten