Seite 1 von 2

onclick in echo

Verfasst: 08.02.2005 13:00
von DarkMan32
Hallo,

ich wollte auf der Hauptseite ein Login einfügen und da sollte es so ein, dass im oberen Kasten Loginname steht und bei klick es sich leert. Nun ist aber das Problem, dass es davor noch die Kontrolle geben soll ob er eingeloggt ist oder nicht und dann muss ich das doch sein:

Code: Alles auswählen

<?php

if ( $userdata['session_logged_in'] )
{

$link = append_sid('index.php');
    echo '<a href="$link">Zum Forum</a>';

}
else
{

echo '		<form action="forum/login.php" method="post"> /n';

echo '	<img src="forum/templates/BBTech/images/spacer.gif" width="78" height="6"> /n';


echo '<input type="text" name="username" value="Loginname" size="15" maxlength="50" onclick="this.value='';"><br><br> /n';
echo '<input type="password" name="password" size="15" maxlength="50"><br><br> /n';
echo 'Autologin? <input type="checkbox" name="autologin"><br> /n';
echo '<input type="hidden" name="redirect" value="index.php"> <br> /n';
echo '<input type="submit" name="login" value="Login"> /n';
echo '</p> /n';
echo '</form> /n';	 
    
}
?>
Aber dann stört ja das '' bei onlick! Was kann ich da machen?

Und oben wollte ich aprend sid mit einfügen, klappt das so?

Danke im Voraus

Re: onclick in echo

Verfasst: 08.02.2005 16:08
von Blutgerinsel
DarkMan32 hat geschrieben: Aber dann stört ja das '' bei onlick! Was kann ich da machen?

Und oben wollte ich aprend sid mit einfügen, klappt das so?
Ist der Beitrag eine codierte Nachricht die man erst decodieren muss bevor man erst die Sachlage erfassen kann?

Verfasst: 08.02.2005 17:55
von DarkMan32
Nochmal zum Nachvollziehen:

Alsoich habe eine in phpBB eingebundene Homepage, auf der ich einen Login eingefügt habe.

___________
|__________|
___________
|__________|
_______
| Login |

Im oberen Kasten soll der User sein Nick eintragen und darunter das Passwort. Damit das auch für jeden verständlich ist wo was reingehört, steht im oberen Kasten standardmäßig Loginname (ich hoffe das kann jeder nachvollziehen).

Nun klick der User in den Kasten um seinen Nick einzutragen und Loginname erlischt. Der Code sieht dann so aus:

Code: Alles auswählen

<input value="Loginname" onclick="this.value='';">
Wenn ich nun aber erst eine Überprüfung mache, ob der User nicht schon bereits angemeldet ist. Dazu stand ja in der KnowledgeBase folgendes

Code: Alles auswählen

if ( $userdata['session_logged_in'] )
{
    // Code, wenn ein Benutzer angemeldet ist
}
else
{
    // Code, wenn kein Benutzer angemeldet ist
}
Wenn er angemeldet ist soll ein Link mit zum Forum erscheinen. Dafür wird ja

Code: Alles auswählen

<a href="<?= append_sid('index.php'); ?>">Zum Forum</a>
empfolen. Aber wie kann ich das in die Überprüfung einfügen, sodass der Link auch ordnungsgemäß funktioniert?


Und wenn der User nicht angemeldet ist, soll eben der Login erscheinen. Bei dem oberen Kasten sieht der Code ja wie oben aus. Und jetzt noch in die Überprüfung eingebaut:

Code: Alles auswählen

echo '<input value="Loginname" onclick="this.value=' ';">';
Aber da ja bei this.value zwei agostrophe stehen, denk php, dass dort die echo Anweisung bereits zu Ende ist. Darum ergibt das ganze dann einen Fehler. Jetzt ist meine Frage, wie ich das ganze umschreiben muss, damit das funktioniert, ohne gleich ein include Anweisung zu verwenden (also so

Code: Alles auswählen

include ('login.php');
)

Jetzt alles verstanden?

Verfasst: 08.02.2005 18:03
von oliver12345
@ DarkMan32

Versuche mal das hier:

Ersetze:

Code: Alles auswählen

echo '<input type="text" name="username" value="Loginname" size="15" maxlength="50" onclick="this.value='';"><br><br> /n';
mit dem:

Code: Alles auswählen

echo '<input type="text" name="username" value="Loginname" size="15" maxlength="50" onclick="this.value=\'\';"><br><br> /n';

Verfasst: 08.02.2005 18:06
von QCO
Nein, tut mir wirklich leid, aber deine Beschreibung des Problems ist absolut unverständlich.
Ich hab deinen Code gelesen und nur dort zufällig einen Fehler gesehen.
Aber du kannst nicht erwarten, dass hier jemand x Zeilen Code liest ohne zu wissen, wonach er suchen soll.

Code: Alles auswählen

echo '<input value="Loginname" onclick="this.value=\' \';">';
Das sollte dein Problem lösen.

Aber was du mit dem Link willst, ist mir nicht klar. Soweit ich das überblicke, sollte das so, wie dein Code ist funktionieren.

[edit] Da hab ich mir wohl wieder zu viel Zeit gelassen... :-?

Verfasst: 08.02.2005 19:03
von DarkMan32
Sollte kein Vorwurf sein, ist mir auch erst danach aufgefallen ;)

Super, hat alles geklappt, danke!

Jetzt habe ich aber beim mehrmaligen testen festgestellt, dass manchmal folgende fehlermeldung kommt:

Code: Alles auswählen

Warning: Cannot modify header information - headers already sent by (output started at /index.php:9) in /forum/includes/sessions.php on line 305

Warning: Cannot modify header information - headers already sent by (output started at /index.php:9) in /forum/includes/sessions.php on line 306
Also das erschien schon vor dem hinzufügen von onclick="this.value='';" und zwar nachdem ich

Code: Alles auswählen

<?php
//Benötigte Dateien und Variablen von phpBB
define('IN_PHPBB', true);
$phpbb_root_path = './forum/';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);


//Session auslesen und Benutzer-Informationen laden
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata); 
einfügte (also für as einbinden einer Seite in phpBB). In dieser Datei in der angegebenen Zeile steht was mit Cookies für die Session.

Was bedeutet das?




[EDIT]
Wegen dem link:

Also in der Knowledge-Base steht doch, dass man für das verlinken zum Forum von einer in phpBB eingebunden Seite nicht

Code: Alles auswählen

<a href="index.php">Zum Forum</a>
sondern besser

Code: Alles auswählen

<a href="<?= append_sid('index.php'); ?>">Zum Forum</a>
nehmen sollte.

Wie kann ich das jetzt in die Abfrage einfügen weil

Code: Alles auswählen

if ( $userdata['session_logged_in'] )
{
<a href="<?= append_sid('index.php'); ?>">Zum Forum</a>
}
else
{
    // Code, wenn kein Benutzer angemeldet ist
}
geht das ja nicht.

Verfasst: 08.02.2005 19:25
von oliver12345
@ DarkMan32

Ersetze:

Code: Alles auswählen

<a href="<?= append_sid('index.php'); ?>">Zum Forum</a>
mit:

Code: Alles auswählen

echo '<a href="' . append_sid("index.$phpEx") . '">Zum Forum</a>';

Verfasst: 08.02.2005 19:37
von DarkMan32
Hat auch geklappt! THX!

Wenn mir jetzt noch jemand den Fehler erklären kann bin ich schon zufrieden ^^

Verfasst: 08.02.2005 20:19
von Blutgerinsel
DarkMan32 hat geschrieben:Hat auch geklappt! THX!

Wenn mir jetzt noch jemand den Fehler erklären kann bin ich schon zufrieden ^^
Kurz:
Ein HTTP Header kann und darf nur einmal gesendet werden.....

Verfasst: 08.02.2005 20:54
von Pyramide
Blutgerinsel hat geschrieben:Kurz:
Ein HTTP Header kann und darf nur einmal gesendet werden.....
Und lang: KB:headers_already_sent