Seite 1 von 10

Profildaten auf fremden Seiten ?

Verfasst: 07.10.2003 09:42
von ph!L
Hallo,
versuche hier grade ein Formular zu basteln, das Registrierte Forumuser benutzen sollen.
Wenn er das Abschickt, soll ich aber auch wissen, welcher Forumuser das Formular ausgefüllt hat.
Deswegen dachte ich an ein Textfeld, das den Platzhalter {USERNAME} enthält.
so müsste der user seinen nick nicht eintragen und ich wüsste trotzdem wer es ist.
welche dateien muss ich aber in die besagte formularseite includen, damit das auch funktioniert ?
hab das formular in eine blank_page eingebaut (blank_page mod)

dank im vorraus und gruß von der spree
phil

edit: noch etwas: ich hab die ersten 8 felder (ICQ,AIM,WEBSITE,LOCATION etc.) durch eine andere beschriftung geändert. heißt: da wo früher ICQ stand, steht jetzt vorname, statt AIM, nachname etc.
die platzhalter im textfeld hab ich so gelassen, nur die beschriftung geändert.
trotzdem zeigt er die daten die dort eingegeben wurden nicht an.
bzw. als einziges LOCATION wird richtig angezeigt.
das andere müsste doch rein von der logik so funktionieren, oder nicht ??

nochmal edit: sorry, falsches forum bin bei den ganzen fenstern wohl durcheinander gekommen.
kann ins phpbb at work verschoben werden.

Verfasst: 07.10.2003 13:48
von Acid
..passt auch ins Mods-Forum.

Um den Namen des User herauszufinden, der sich grad in dem Bereich aufhält, reicht´s wenn du $userdata['username'] in der *.php angibst.
Wegen dem Problem mit dem Profil und den Feldern: speichere mal die usercp_register.php neu als *.txt ab und poste einen Link (zusätzlich auch zur profile_add_body.tpl). Wenn das Problem (auch) beim Ansehen eines Profiles auftaucht, dann wären es usercp_viewprofile.php und profile_view_body.tpl.

Verfasst: 07.10.2003 14:30
von ph!L
Also:

das mit $userdata['username'] klappt leider nicht.
bei mir sieht das so aus:

Code: Alles auswählen

<? <input name="vorname" type="text" id="vorname" value="$userdata['username']">?>
mit dem ergebnis, dass im textfeld nichts angezeigt wird.

zum eigentlichen problem:
das anzeigen der daten hab ich noch nicht versucht, da es ja schon bei der editierung des profils nicht klappt. da hab ich das erstmal aussen vor gelassen.

link zu den files: http://www.cs2000-berlin.com/forum/file ... er.php.txt & http://www.cs2000-berlin.com/forum/file ... d_body.tpl

Verfasst: 07.10.2003 14:47
von Acid
<input name="vorname" type="text" id="vorname" value="<?php echo $userdata['username'] ?>" />
Wenn dann so, allerdings funktioniert $userdata nur wenn du die *.php wie folgt aufbaust:

Code: Alles auswählen

<?php
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);

usw.
Ohne das funktioniert $userdata nicht und du müsstest eine Verbindung zur Datenbank herstellen, um mit ´nem SQL-Query den Usernamen herauszufinden.


Bei den <input>´s in der profile_add_body.tpl brauchst bzw. darfst du name="xx" (xx steht für jeweiligen Eintrag) nicht ändern. Da du ja nur die Kennzeichnung von z.B. ICQ auf Schulform ändern willst.

Verfasst: 07.10.2003 15:48
von ph!L
also das erste funktioniert ganz wunderbar.
es lag am echo, den hatte ich nicht bedacht.

nun zum zweiten:
also das klappt jetzt auch ganz wunderbar, bis auf 2 ausnahmen.
die felder in die, die icq nummer und die webseite kommen, bleiben weiterhin leer.
obwohl ich bei denen den inhalt für <input name=".."> wieder auf standart gemacht habe.

Code: Alles auswählen

 <tr> 
      <td class="row1"><span class="explaintitle">Telefax</span></td>
      <td class="row2"> <input type="text" class="post" style="width: 200px"  name="website" size="25" maxlength="100" value="{WEBSITE}" /> 
      </td>
    </tr>
liegt das vielleicht an einer überprüfung der eingegebenen (bei icq darauf, dass es nur ziffern sind, bei der webseite darauf, dass ein http:// vorhanden ist oder ähnliches) daten ?

ansonsten wirklich tolle hilfe

Verfasst: 07.10.2003 22:40
von Acid
stimmt. Genau daran liegt es. :grin: Um´s zu ändern, müsstest du folgenden Code in der functions_validate.php löschen oder auskommentieren (vor jeder Zeile ein // schreiben)..

Code: Alles auswählen

	// ICQ number has to be only numbers.
	if (!preg_match('/^[0-9]+$/', $icq))
	{
		$icq = '';
	}
	
	// website has to start with http://, followed by something with length at least 3 that
	// contains at least one dot.
	if ($website != "")
	{
		if (!preg_match('#^http[s]?:\/\/#i', $website))
		{
			$website = 'http://' . $website;
		}

		if (!preg_match('#^http[s]?\\:\\/\\/[a-z0-9\-]+\.([a-z0-9\-]+\.)?[a-z]+#i', $website))
		{
			$website = '';
		}
	}
Du müsstest übrigens dann auch die Ausgabe in Profil, Themenansicht bzw. Mitgliederliste ändern, da sonst z.B. die eingebene Information (bei Webseite) verlinkt is oder bei ehemals ICQ die Info mit´m Button versehen und ebenfalls verlinkt is.

Mitgliederliste
memberlist.php
++FINDE++

Code: Alles auswählen

		$www_img = ( $row['user_website'] ) ? '<a href="' . $row['user_website'] . '" target="_userwww"><img src="' . $images['icon_www'] . '" alt="' . $lang['Visit_website'] . '" title="' . $lang['Visit_website'] . '" border="0" /></a>' : '';
++MIT FOLGENDEM ERSETZEN++

Code: Alles auswählen

		$www_img = ( $row['user_website'] ) ? $row['user_website'] : '';
Profil
usercp_viewprofile.php
++FINDE++

Code: Alles auswählen

$www = ( $profiledata['user_website'] ) ? '<a href="' . $profiledata['user_website'] . '" target="_userwww">' . $profiledata['user_website'] . '</a>' : '&nbsp;';
++MIT FOLGENDEM ERSETZEN++

Code: Alles auswählen

$www = ( $profiledata['user_website'] ) ? $profiledata['user_website'] : '&nbsp;';
++FINDE++

Code: Alles auswählen

	$icq_img = '<a href="http://wwp.icq.com/scripts/search.dll?to=' . $profiledata['user_icq'] . '"><img src="' . $images['icon_icq'] . '" alt="' . $lang['ICQ'] . '" title="' . $lang['ICQ'] . '" border="0" /></a>';
++MIT FOLGENDEM ERSETZEN++

Code: Alles auswählen

	$icq_img = $profiledata['user_icq'];
profile_view_body.tpl
++FINDE++

Code: Alles auswählen

		  <td class="row1"><script language="JavaScript" type="text/javascript"><!-- 

		if ( navigator.userAgent.toLowerCase().indexOf('mozilla') != -1 && navigator.userAgent.indexOf('5.') == -1 && navigator.userAgent.indexOf('6.') == -1 )
			document.write(' {ICQ_IMG}');
		else
			document.write('<table cellspacing="0" cellpadding="0" border="0"><tr><td nowrap="nowrap"><div style="position:relative;height:18px"><div style="position:absolute">{ICQ_IMG}</div><div style="position:absolute;left:3px;top:-1px">{ICQ_STATUS_IMG}</div></div></td></tr></table>');
		  
		  //--></script><noscript>{ICQ_IMG}</noscript></td>
++MIT FOLGENDEM ERSETZEN++

Code: Alles auswählen

		  <td class="row1"><span class="genmed">{ICQ_IMG}</span></td>
Falls du die Änderungen für die Themenansicht auch benötigst, sag bescheid..

Verfasst: 08.10.2003 08:40
von ph!L
also:
das hat ja wunderbar geklappt :)
die änderung in der viewprofile_body.tpl konnte ich nicht machen, da ich ein anderes template benutze, aber das kann ich auch später noch alleine machen.
mir ist erstmal wichtig, dass die daten richtig eingetragen werden und abgerufen werden können.
wie du vielleicht gesehen hast, habe ich noch 17 weitere textfelder angegeben. diese funktionieren jetzt auch toll, leider gibt es da 2 ausnahmen, die sich hartnäckig weigern.
das ist zum einen 'internetanbindung' und 'winschool_pcos'
<tr>
<td class="row1">{L_INTERNETANBINDUNG}</td>
<td class="row2"><input type="text" name="INTERNETANBINDUNG"style="width: 200px" size="25" class="post"

value="{INTERNETANBINDUNG}">
</td>
</tr>
<tr>
<td class="row1">{L_INIS_SERVEROS}</td>
<td class="row2"><input type="text" name="inis_serveros"style="width: 200px" size="25" class="post"

value="{INIS_SERVEROS}">
</td>
</tr>
<tr>
<td class="row1">{L_INIS_PCOS}</td>
<td class="row2"><input type="text" name="inis_pcos"style="width: 200px" size="25" class="post"

value="{INIS_PCOS}">
</td>
</tr>
<tr>
<td class="row1"><strong>Winschool:</strong><br>
{L_WINSCHOOL_SERIENNUMMER}</td>
<td class="row2"><br>
<input type="text" name="winschool_seriennummer"style="width: 200px" size="25" class="post"

value="{WINSCHOOL_SERIENNUMMER}">
</td>
</tr>
<tr>
<td class="row1">{L_WINSCHOOL_VERSION}</td>
<td class="row2"><input type="text" name="winschool_version"style="width: 200px" size="25" class="post"

value="{WINSCHOOL_VERSION}">
</td>
</tr>
<tr>
<td class="row1">{L_WINSCHOOL_SERVEROS}</td>
<td class="row2"><input type="text" name="winschool_serveros"style="width: 200px" size="25" class="post"

value="{WINSCHOOL_SERVEROS}">
</td>
</tr>
<tr>
<td class="row1">{L_WINSCHOOL_PCOS}</td>
<td class="row2"><input type="text" name="WINSCHOOL_PCOS"style="width: 200px" size="25" class="post"

value="{WINSCHOOL_PCOS}">
</td>
</tr>
woran kann das nun wieder liegen ?
vielleicht in einer php datei irgendwo vertippt ?
und gibt es vielleicht irgendwo eine übersicht, welche platzhalter in welchen tpl's bzw. php's funktionieren ?
falls ich mich undeutlich ausgedrückt habe *g* : ich möchte in der vietopic_body.tpl noch bei jedem anzeigen lassen, in welcher gruppe er ist. ist das ohne großen aufwand möglich ? hab das glaube ich, mal im forum von awsw gesehen, ist für meine zwecke, überaus passend.
ach ja, und bevor ich es vergesse: ist es möglich ein textfeld durch ein dropdown menü zu ersetzen ? will bei internetanbindung, inis_version etc. vorgaben machen, aus denen der user nur auswählen muss (wer weiß schon solche sachen, wenn er davon kaum ahnung hat)

gruß aus und nach berlin :)

Verfasst: 08.10.2003 09:29
von ph!L
Acid hat geschrieben:
<input name="vorname" type="text" id="vorname" value="<?php echo $userdata['username'] ?>" />
Wenn dann so, allerdings funktioniert $userdata nur wenn du die *.php wie folgt aufbaust:

Code: Alles auswählen

<?php
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);

usw.
Ohne das funktioniert $userdata nicht und du müsstest eine Verbindung zur Datenbank herstellen, um mit ´nem SQL-Query den Usernamen herauszufinden.


Bei den <input>´s in der profile_add_body.tpl brauchst bzw. darfst du name="xx" (xx steht für jeweiligen Eintrag) nicht ändern. Da du ja nur die Kennzeichnung von z.B. ICQ auf Schulform ändern willst.
eine frage hab ich dazu auch noch:
ich will auch noch den schulnamen und richtigen namen anzeigen lassen, also die felder AIM, und meine selbst hinzugefügten felder, vorname und name.
was genau muss ich dann da oben einfügen, statt $userdata="...".
wie sieht das schema aus ? will ja nicht ständig deswegen fragen stellen ;)

Verfasst: 08.10.2003 12:02
von Acid
Schreib mal "internetanbietung" und "winschool_pcos" bei den <inputs>´s klein (name="...").
ich möchte in der vietopic_body.tpl noch bei jedem anzeigen lassen, in welcher gruppe er ist.
Da kannst du den Show Usergroups Hack nehmen.
ach ja, und bevor ich es vergesse: ist es möglich ein textfeld durch ein dropdown menü zu ersetzen ?
Lade dir mal diesen Hack herunter.. in der addfield_121.zip findest du eine Anleitung für ein Dropdown Menü (sollte verständlich sein).

Alle Informationen die in der "users" Tabelle gespeichert werden, kannst du mit $userdata['x'] abfragen (wobei du x mit dem Namen der jeweiligen Tabellenspalte ersetzen musst, z.B. $userdata['user_posts']).

Verfasst: 08.10.2003 12:10
von ph!L
Acid hat geschrieben:Schreib mal "internetanbietung" und "winschool_pcos" bei den <inputs>´s klein (name="...").
so war es am anfang auch, groß ist es nur, weil ich drag und drop mit der {L_INTERNETANBINDUNG} & {L_WINSCHOOL_PCOS} gemacht habe. dachte hätte mich vertippt. in kleinschreibung funzt es jedenfalls auch nicht. wundert mich ehrlichgesagt selbst, weil alles andere problemlos funktioniert.
Da kannst du den Show Usergroups Hack nehmen.
Lade dir mal diesen Hack herunter.. in der addfield_121.zip findest du eine Anleitung für ein Dropdown Menü (sollte verständlich sein).
ja, genau sowas hab ich gesucht :)
Alle Informationen die in der "users" Tabelle gespeichert werden, kannst du mit $userdata['x'] abfragen (wobei du x mit dem Namen der jeweiligen Tabellenspalte ersetzen musst, z.B. $userdata['user_posts']).
und ja, so hab ich mir das schema vorgestellt *g*

werd die beiden mods mal probieren, sowie das mit der userdata und dann berichten

edit: zum ersten problem mit den beiden textfeldern: kann eigentlich nur sein, dass ich mich in irgendeiner datei vertippt habe, als ich die zusätzlichen textfelder eingebaut habe, oder ?

nochmal edit: ok, dass mit den daten aus der "users" tabelle klappt ganz hervorragend. leider ersetzt er aber ein leerzeichen mit einem '+' so das in der ausgabe steht: Ihre Schule: Fritz+Karsen+Gesamtschule.
Wie ersetzte ich also das + mit einem Leerzeichen ?