Kein Auslesen der UID in Nav-Boxen und eigener Seite

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Volker76
Mitglied
Beiträge: 9
Registriert: 28.11.2003 00:57

Kein Auslesen der UID in Nav-Boxen und eigener Seite

Beitrag von Volker76 »

Hallo zusammen,

wir möchten in unserem Forum per "eigener Seite" ein Bewertungssystem einbinden. Das Bewertungssystem selbst hat mit dem Forum aber nichts zu tun. Es geht also nicht um die Bewertung von Forenelementen wie Threads, Beiträgen oder so.

Style-technisch möchten wir das so umsetzen, dass das letzte zu bewertende Objekt in einer Box neben dem Forum angezeigt wird.
Das habe ich mit den verschiedensten Optionen die es da gibt u.a. dem Subsilver2_clean Style umgesetzt.

Den php-Code habe ich in ein Template geschrieben bzw. über INCLUDEPHP xy.php eingebunden. Entsprechende Einstellungen im Admin Panel sind auch gemacht.

Die Ausgabe in der Box funktioniert auch, was nicht funktioniert ist folgendes:

Die Ausgabe enthält einen Link, der zur Detail-Seite des zu bewertenden Objekts führt, auf der dann die Bewertung abgegeben werden kann. Dabei soll die UID ausgelesen werden.
Mit dem nun vorliegenden Code, funktioniert aber genau das nicht. Die UID wird nicht ausgelesen.

Das selbe Problem besteht, wenn ich den php-code auf eine eigene Seite einbinde. Ausgabe funktioniert, auslesen der UID nicht.

Der php-code stammt von einem Bekannten, da ich selbst nicht so die Ahnung von php habe. Da dieser Bekannte im Moment aber nicht "verfügbar" ist, dachte ich ich frage hier mal nach. Evlt hat ja jemand eine Idee.

Der Code ist folgender:

Code: Alles auswählen

<?php
//NW
$dbLink=mysql_connect('localhost','xxxxx','xxxxxx');
mysql_select_db('usr_xxxx',$dbLink);

$jetzt = time(); //z.B. 1230994400

// Vorschlag für die nächste Location
$abfrage1="select * from `ab_locations` ORDER BY nicht_besucht_seit DESC LIMIT 2";
$ergebnis1=mysql_query($abfrage1);
$zaehler1 = 0;
while($row=mysql_fetch_object($ergebnis1)){
	$zaehler1 = $zaehler1 + 1;
	$location_name1[$zaehler1] = $row->location_name;
	$nicht_besucht_seit1[$zaehler1]  = $row->nicht_besucht_seit;
	$locid1[$zaehler1] = $row->id;
}
$abfrage2="select * from `ab_locations` ORDER BY nicht_besucht_seit ASC LIMIT 2";
$ergebnis2=mysql_query($abfrage2);
$zaehler2 = 0;
while($row=mysql_fetch_object($ergebnis2)){
	$zaehler2 = $zaehler2 + 1;
	$location_name2[$zaehler2] = $row->location_name;
	$nicht_besucht_seit2[$zaehler2]  = $row->nicht_besucht_seit;
	$locid2[$zaehler2] = $row->id;
}
$monat = date('m');
$tag = date('d');

if (($monat == 12) and ($tag < 24)){
	echo"N&auml;chste Location: <b>Weihnachtsmarkt!</b>";//&nbsp;>&nbsp;<a href=\"./bewerten.php?uid=".$uid."&locid=91\"><u>bewerten!</u></a>";
}else{
	if($nicht_besucht_seit1[1] > $jetzt){
		$locid = $locid1[2];
		echo"Am ".date('d.m.Y',$nicht_besucht_seit1[2])." waren wir im: <b>".$location_name1[2]."</b>&nbsp;>&nbsp;<a href=\"./bewerten.php?uid=".$uid."&locid=".$locid."\"><u>bewerten!</u></a><br>F&uuml;r den ".date('d.m.Y',$nicht_besucht_seit1[1])." wurde <b>".$location_name1[1]."</b> festgelegt.";
	}else{
		$locid = $locid1[1];
		echo"Am ".date('d.m.Y',$nicht_besucht_seit1[2])." waren wir im: <b>".$location_name1[2]."</b>&nbsp;>&nbsp;<a href=\"./bewerten.php?uid=".$uid."&locid=".$locid."\"><u>bewerten!</u></a><br>N&auml;chste Location: k&ouml;nnte ".$location_name2[1]." sein!?</b>";
	}
}

if(!$ergebnis1) die(mysql_error());

mysql_close($dbLink);

?>


Zuletzt geändert von Volker76 am 08.06.2012 08:27, insgesamt 2-mal geändert.
Benutzeravatar
TW1920
Mitglied
Beiträge: 746
Registriert: 02.06.2007 16:31
Wohnort: Ismaning
Kontaktdaten:

Re: Kein Auslesen der UID in Nav-Boxen und eigener Seite

Beitrag von TW1920 »

Hallo,

als erstes möhte ich dich hinweisen, dass man niemals Dateien mit Benutzernamen und Passwort seiner Datenbank posten sollte ;)
Ersetzte diese felder am besten durch username und password - sollte jemand deine seite kennen, hat er jetzt deine zugangsdaten -> du solltest daher das pw jetzt ändern ;)

Zum eigentlichen Problem:
Zum Auslesen der user-id muss das script in das system von phpbb integriert werden, wo man diese dann aus einer variable auslesen kann.

Infos findest du auf folgenden seiten:
Allgemeines Wiki: http://wiki.phpbb.com/
Für dich besonders wichtig: http://wiki.phpbb.com/Deutsch:Vorlage_f ... ene_Seiten

Desweiteren findest du hier ein gutes php-tutorial:
http://tut.php-quake.net/de/


Alternativ kannst du in der Jobbörse den Auftrag auch weitergeben:
viewtopic.php?f=57&t=101118
Mfg T. Wolf
-Mods gesucht? Ne weitere Community gesucht?
-Mods gesucht? Mod-Übersetzungen gesucht?:->hier klicken

Volker76
Mitglied
Beiträge: 9
Registriert: 28.11.2003 00:57

Re: Kein Auslesen der UID in Nav-Boxen und eigener Seite

Beitrag von Volker76 »

Hallo,

ich könnte schwören, dass ich Daten ausgeixte habe. Naja muss dann wohl ein Copy/Paste fehler gewesen sein.

Aber Danke für das darauf Aufmerksam machen.

Das Tutorial für die eigene Seite kenne ich und nach diesem Prinzip habe ich auch dann eine eigene Seite erstellt und den hier veröffentlichten Code eingefügt.

Ergebnis bleibt das gleiche

Viele Grüße

Volker
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Re: Kein Auslesen der UID in Nav-Boxen und eigener Seite

Beitrag von Pyramide »

Volker76 hat geschrieben:Das Tutorial für die eigene Seite kenne ich und nach diesem Prinzip habe ich auch dann eine eigene Seite erstellt und den hier veröffentlichten Code eingefügt.

Ergebnis bleibt das gleiche
Wie sieht denn der vollständige Code aus und an welcher Stelle funktioniert was genau nicht (genaue fehlerbeschreibung, kein "es funktioniert nicht")? Siehe auch KB:programmierfragen
KB:knigge
Volker76
Mitglied
Beiträge: 9
Registriert: 28.11.2003 00:57

Re: Kein Auslesen der UID in Nav-Boxen und eigener Seite

Beitrag von Volker76 »

Ok nehmen wir als Beispiel die eigene Seite. Ich habe meinen Code durch den des Beispiels ersetzt.

Code: Alles auswählen

<?php
/**
*
* @author Original Autor Benutzername autor_email@domain.de - http://meine-seite.de
* @author Anderer Autor Benutzername andere_email@domain.de - http://domain.de
*
* @package {PACKAGENAME}
* @version $Id$
* @copyright (c) 2007 Dein Gruppen Name
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/

/**
* @ignore
*/
// Benötigte Dateien und Variablen von phpBB 
define('IN_PHPBB', true);
$phpbb_root_path = './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Da wir weiter unten noch einen Avatar anzeigen lassen wollen,
// benötigen wir noch die dazu passende Funktion 
// die in der Datein includes/functions_display.php vorhanden ist.
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);

// Session auslesen und Benutzer-Informationen laden
$user->session_begin();  // Session auslesen
$auth->acl($user->data); // Benutzer-Informationen laden
$user->setup('mods/meine_sprach_datei'); // Sprachvariablen aus eigener Sprach Datei laden

/*
* Nun folgt erst Dein PHP Code für die neue Seite, also:
* Variablen setzen, Datenbankabfragen, Einfügen und Entfernen von Einträgen usw...
*
* Dies ist nun ein sehr primitives Beispiel. 
* Es soll nur veranschaulichen wie es funktioniert.
*
*/
//NW
$dbLink=mysql_connect('localhost','xxxx','xxxx');
mysql_select_db('usr_xxxx1',$dbLink);

$jetzt = time(); //z.B. 1230994400
$einewoche = 604800; // (1252371600 - 1251766800)
$einmonat = ($einewoche * 4);
$sechsmonate = $jetzt - ($einmonat * 6);

// Wir waren zuletzt in...
$abfrage1="select * from `ab_locations` ORDER BY nicht_besucht_seit DESC";
$ergebnis1=mysql_query($abfrage1);
$zaehler1 = 0;
while($row=mysql_fetch_object($ergebnis1)){
	$zaehler1 = $zaehler1 + 1;
	$location_name1[$zaehler1] = $row->location_name;
	$nicht_besucht_seit1[$zaehler1]  = $row->nicht_besucht_seit;
	$locid1[$zaehler1] = $row->id;
}
// Vorschlag für die nächste Location
$abfrage2="select * from `ab_locations` where ((inaktiv IS NULL)or(inaktiv = '')) and nicht_besucht_seit < $sechsmonate ORDER BY nicht_besucht_seit ASC";
$ergebnis2=mysql_query($abfrage2);
$zaehler2 = 0;
while($row=mysql_fetch_object($ergebnis2)){
	$zaehler2 = $zaehler2 + 1;
	$location_name2[$zaehler2] = $row->location_name;
	$nicht_besucht_seit2[$zaehler2]  = $row->nicht_besucht_seit;
	$locid2[$zaehler2] = $row->id;
}
$monat = date('m');
$tag = date('d');
srand(microtime()*1000000);
$max = $zaehler2;
$zufallszahl = rand(1,$max);

if (($monat == 12) and ($tag < 24)){
	echo"N&auml;chste Location: <b>Weihnachtsmarkt!</b>";//&nbsp;>&nbsp;<a href=\"./bewerten.php?uid=".$uid."&locid=91\"><u>bewerten!</u></a>";
}else{
	if($nicht_besucht_seit1[1] > $jetzt){
		$locid = $locid1[2];
		echo"Am ".date('d.m.Y',$nicht_besucht_seit1[2])." waren wir im: <b>".$location_name1[2]."</b>&nbsp;>&nbsp;<a 

href=\"./bewerten.php?uid=".$uid."&locid=".$locid."\"><u>bewerten!</u></a><br>F&uuml;r den ".date('d.m.Y',$nicht_besucht_seit1[1])." wurde <b>".$location_name1[1]."</b> festgelegt.";
	}else{
		$locid = $locid1[1];
		echo"Am ".date('d.m.Y',$nicht_besucht_seit1[1])." waren wir im: <b>".$location_name1[1]."</b>&nbsp;>&nbsp;<a 

href=\"./bewerten.php?uid=".$uid."&locid=".$locid."\"><u>bewerten!</u></a><br>N&auml;chste Location: k&ouml;nnte <i>".$location_name2[$zufallszahl]."</i> sein!?</b>";
	}
}

if(!$ergebnis1) die(mysql_error());

mysql_close($dbLink);


// Seiten Titel, diese Sprach Variable sollte in der Sprach Datei, 
// welche weiter oben genannt wurde, definiert sein.
page_header($user->lang['MEIN_TITEL']);

// Defniere nun den Dateinamen Deines Templates welches Du benutzen moechtest.
// Dies ist der Name von Deinem Template welches unter /styles/<style>/templates/ zu finden ist.
$template->set_filenames(array(
    'body' => 'mein_template.html',
));

// Script vervollständigen und Seite anzeigen lassen.
page_footer();

?>
Die Ausgabe sieht dann z.B. so aus
Am 30.05.2012 waren wir im: XXX > bewerten!
Nächste Location: könnte XXX sein!?
Der Link hinter bewerten sollte so aussehen: http://www.xxx.de/bewerten.php?uid=123&locid=2

Sieht aber so aus http://www.xxx.de/bewerten.php?uid=&locid=2

sprich, die UID wird nicht ausgelesen.
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Re: Kein Auslesen der UID in Nav-Boxen und eigener Seite

Beitrag von Pyramide »

  • Ich kann in dem Code nirgends eine Stelle finden, an der du die Variable $uid mit einem Wert befüllst - somit ist diese natürlich leer. Falls dort die ID des aktuell eingelogten Benutzers stehen soll, findest du diese in $user->data['user_id']. Wobei es eine sehr schlechte Idee ist, diese in der URL zu übergeben, da dann eine Manipulation ein Kinderspiel ist. Besser sollte diese auf der Zielseite direkt ausgelesen werden.
  • Sofern du dich nicht mit einer komplett separaten Datenbank verbinden möchtest, ist es Resourcenverschwendung, nochmal separat eine eigene Datenbankverbindung aufzubauen. Du solltest stattdessen den DBAL von phpBB nutzen, um die vorhandene Datenbankverbindung mitzunutzen.
  • Da du zunächst einfach so mit echo HTML ausgibst und dann erst das Template renderst, wird ungültiger HTML-Code erzeugt. Du solltest entweder deine dynamischen Inhalt als Variable(n) ans Template übergeben oder komplett auf die Template-Ausgabe verzichten und dein eigenes HTML-Grundgerüst (<html><head>...) ausgeben.
KB:knigge
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“