Zum Inhalt springen

Problem mit Login für Webseite!!


Empfohlene Beiträge

Hallo Leute,

habe für meine Webseite ein Login erstellt, der Funktioniert auch soweit. Leider hab ich ein kleines Problem nach dem ich mich Angemeldet habe. Das Ziel ist es nach erfolgreichen Login soll sich auf der Webseite eine neue Webseite öffnen, leider bekomm ich nur ein Link zu der Webseite.

Hier mein Code:


<?
session_start();
include 'sessionhelpers.inc.php';
if (isset($_POST['Einloggen']))
{
$userid=check_user($_POST['username'], $_POST['userpass']);
if ($userid!=false)
login($userid);
else
echo 'Ihre Anmeldedaten waren nicht korrekt!';
}
if (!logged_in())


--------------------------------
html:

echo '<form method="post" action="index.htm">
<td style="border-style: none; border-width: medium" width="57%"></td>
<td style="border-style: none; border-width: medium" width="26%">
<input type="text" name="username" size="20"></td>
<td style="border-style: none; border-width: medium" width="15%"></td>
</tr>
<tr>
<td style="border-style: none; border-width: medium"></td>
<td style="border-style: none; border-width: medium">
<input type="password" name="userpass" size="20"></td>
<td style="border-style: none; border-width: medium"></td>
</tr>
</table>
<table border="1" width="100%" id="table2" style="border-width: 0px">
<tr>
<td style="border-style: none; border-width: medium"></td>
<td style="border-style: none; border-width: medium" width="49">
<input type="submit" value="Login" name="Einloggen"></td>
<td style="border-style: none; border-width: medium" width="166"></td>

</form>';

--------------------------------

else
echo '<a href="1.html">1</a>';

?>[/PHP]

Dieser Befehl verursacht den Link -> echo '<a href="1.html">1</a>'; aber wie lautet der Befehl zum öffnen einer Webseite?

Zweite Frage wie bekomm ich die Antwort:

else

echo 'Ihre Anmeldedaten waren nicht korrekt!';

unter dem Login Button?

Danke im Voraus!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstmal thx für deine Antwort und den header Tipp!! Leider hab ich schon verschiedene Varianten versucht um die Bedingung zu ändern, jedoch hab ich es nicht geschafft, da ich ein Anfänger in diesem Bereich bin und ich die Skripte von ein paar Tutorials gemixed habe. :rolleyes:

Dritte Frage zwar hab ich ein Login aber in der Adressleiste erscheint der Name Bsp.: w w w.beispiel.de/1.htm das heißt einer kann mein Login umgehen. Wie kann ich das unterdrücken?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Leider hab ich schon verschiedene Varianten versucht um die Bedingung zu ändern, jedoch hab ich es nicht geschafft, da ich ein Anfänger in diesem Bereich bin und ich die Skripte von ein paar Tutorials gemixed habe.

mixen ist gefährlich. Ich rate dir dringend dich mehr damit zu befassen "was" du da tust....

Dritte Frage zwar hab ich ein Login aber in der Adressleiste erscheint der Name Bsp.: w w w.beispiel.de/1.htm das heißt einer kann mein Login umgehen. Wie kann ich das unterdrücken?

weil genau solche dinge auftreten.

Antwort: gar nicht.

du musst in jeder Datei prüfen ob dein User Zugang hat oder nicht.

Einfacher geht es mit einem Portalscript

d.h. eine einzige URL wird immer aufgerufen und mit einem if($_GET['seite'] == 'meinefunktion') prüfst du was gemacht werden soll

zu deinem Script:

am besten du legst ein flag an, das anzeigt ob der user eingeloggt ist

$logginerror = true ode $logginerror = false

und fragst das mit if($logginerror ) unter dem Formular wieder ab.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstmal danke für deine Antwort!

Einfacher geht es mit einem Portalscript

d.h. eine einzige URL wird immer aufgerufen und mit einem if($_GET['seite'] == 'meinefunktion') prüfst du was gemacht werden soll

Kommt in die Funktion der Script unten? Bzw. verstehe ich nicht was er machen soll?

zu deinem Script:

am besten du legst ein flag an, das anzeigt ob der user eingeloggt ist

$logginerror = true ode $logginerror = false

und fragst das mit if($logginerror ) unter dem Formular wieder ab.

Oben setzt du ja Variablen ein, aber sollte es nicht so sein:

$logginerror = true or $logginerror = false ?

In der Bedingung:

if($logginerror = true )

{

header('Location:index.htm');


else

    header('Location:1.htm');

}

Geht das so überhaupt?

Link zu diesem Kommentar
Auf anderen Seiten teilen


switch($_GET['seite'])
{
case 'ersteseite':
{
include 'ersteseite.php';
break;
}
case 'interneseite':
{
if(dieser_user_ist_eingeloggt)
include 'interneseite';
else
DIE('404 Seite nicht gefunden');
break;
}
}
[/PHP]

Wie gesagt...beschäftige dich etwas damit. Beispielscripte analysieren (die Beispiele auf php.net sind meistens nur minimale um eine bestimmte funktion zu erläutern, aber kein allgemeines intro)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke für eure Hilfe!

@Aiun

Ich mach wirklich nicht nur Copy/Paste sondern ich versuche das ganze auch wirklich nachzuvollziehen. Leider klappt das nicht auf Anhieb, da ich sehr viele Befehle nicht kenne geschweige deren Funktion kenne.

Ich hab mir vorgenommen PHP zu erlernen und gleich mit nem Login anzufangen ist schwer aber ich möchte das schaffen. Ich weiß das es nicht von heute auf morgen schaffbar ist, jedoch möchte ich in ein paar Monaten fit sein in dem Bereich.

switch($_GET['seite'])
{
case 'ersteseite':
{
include 'ersteseite.php';
break;
}
case 'interneseite':
{
if(dieser_user_ist_eingeloggt)
include 'interneseite';
else
DIE('404 Seite nicht gefunden');
break;
}
}[/PHP]

Ich versuch den Code zu verstehen und anzupassen. Leider kann ich das erst heute Abend wenn ich zu Hause bin.

Hoffe das ihr mir bei fragen helfen könnt/wollt und Rücksicht nimmt, dass ich ein Rookie bin :new.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi danke fürs Verstädnis.

Zurück zur meiner dritten Frage: Ausgabe unter dem Login Button.

Habe die Bedingung umgeändert funktioniert auch wunderbar, nur wenn kein Html-Code dazwischen ist?

Seht selbst:

<?
session_start();
include 'sessionhelpers.inc.php';
if (isset($_POST['Einloggen']))
{
$userid=check_user($_POST['username'],
$_POST['userpass']);

if ($userid!=false)
login($userid);
else
umgeändert ---> $falsch = "1";
}


if (!logged_in())
echo '<form method="post" action="index.htm">
<td style="border-style: none; border-width: medium"
width="96%">
<p style="margin-left: 285px">
<input type="text" name="username" size="20"></td>
</tr>
<tr>
<td style="border-style: none; border-width: medium">
<p style="margin-left: 285px">
<input type="password" name="userpass" size="20"></td>
</tr>
</table>
<table border="1" width="100%" id="table2" style="border-width: 0px">
<tr>
<td style="border-style: none; border-width: medium">
<p style="margin-left: 285px">
<input type="submit" value="Login" name="Einloggen"></td>
</form>';
else
header('Location:1.htm');
----------------------------------------------------------------
</tr>
</table>
<table border="1" width="100%" id="table3" style="border-width: 0px">
<tr>
<td style="border-style: none; border-width: medium">

<p style="margin-left: 285px">
----------------------------------------------------------------
neu meins --->
if ($falsch == "1")
{ echo 'Ihre Anmeldedaten waren nicht korrekt!'; }
else { echo ' '; }
?>[/PHP]

Dieser Quellcode funktioniert nur dann wenn der Html-Quellcode über [b]neu meins--->[/b] weg ist?!?!?!??!?!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Sry wegen Doppelpost, da leider edit nicht mehr geht.

Hab das Problem gelöst.


session_start();
include 'sessionhelpers.inc.php';
if (isset($_POST['Einloggen']))
{
$userid=check_user($_POST['username'],
$_POST['userpass']);
if ($userid!=false)
login($userid);
else
$falsch = "1";
}
if (!logged_in())
echo '<form method="post" action="index.htm">
<td style="border-style: none; border-width: medium"
width="96%">
<p style="margin-left: 285px">
<input type="text" name="username" size="20"></td>
</tr>
<tr>
<td style="border-style: none; border-width:
medium">
<p style="margin-left: 285px">
<input type="password" name="userpass" size="20"></td>
</tr>
</table>
<table border="1" width="100%" id="table2" style="border-width:
0px">
<tr>
<td style="border-style: none; border-width:
medium">
<p style="margin-left: 285px">
<input type="submit" value="Login" name="Einloggen"><p
style="margin-left: 285px">

</form>';
else
header('Location:1.htm');

neu--->

if ($falsch == "1")
{ echo "Ihre Anmeldedaten waren nicht korrekt!"; }
else { echo ''; }

?>
</td>
</tr>

</tr>
[/PHP]

Mich würde es dennoch interessieren wieso die erste Variante nicht geht? Ich dachte PHP ignoriert HTML?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin,

es läuft ja so ab:

Der User schickt Anfrage an den Server. Dieser leitet die PHP-Bestandteile der Seite und ggf. Parameter an den eigenen PHP-Interpreter weiter, der die dann verarbeitet. Die Ergebnisse der Interpretation landen dann zusammen mit dem HTML (daraus wird ja im Endeffekt reines HTML - Der Server schickt ja keine PHP-Bestandteile mehr an den Client zurück) wieder beim Client. Es ist also eine reine HTML-Seite die du zurück geliefert bekommst. Da bei dir die Tags nicht geschlossen waren können sie vom Browser nicht angezeigt werden. Der macht ja auch nix anderes, als den HTML-Text grafisch anzuzeigen.

Das war jetzt ne ganz grobe Darstellung des Vorgangs. Keine Garantie auf Richtigkeit und Vollständigkeit. Darüber kann man ganze Bücher schreiben (wenn man will *g*)..

Solltest dir mal anschauen, was genau passiert, wenn du eine PHP-Seite in deinem Browser öffnest.. hier ein kleiner Vorgeschmack:

Der Ablauf einer PHP-Anfrage

Viele Grüße

Fader :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das war jetzt ne ganz grobe Darstellung des Vorgangs.

Zu grob ;)

Sobald du eine Seite beim Webserver anfragst, prüft der erstmal was er mit der tun soll bzw ob es eine Einstellung gibt, dass er sie nicht direkt ausliefern soll. Bei php-Seiten ist als Handler der Seite der PHP-Interpreter eingetragen. Der Server nimmt also die ganze Seite und übergibt sie an den PHP-Interpreter. Dieser geht das Dokument was er bekommt von oben nach unten zeilenweise durch. Sobald er sieht, dass PHP-Code anfängt (mit <?php, oder auch kurz, aber IMHO nicht so gut, <?). interpretiert er den. Und zwar alles, bis das Endezeichen (?>) kommt. Alles andere wird ignoriert und direkt wieder so ausgegeben, wie es dasteht (egal ob HTML, Text oder sonst was).

Alles was der PHP-Interpreter ausgibt kommt an den Webserver zurück, welcher das dann als Ausgabe an den Client (meistens Browser) liefert.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ach OK und deswegen erkennt er den HTML teil drinne nicht bzw die Befehle.

Danke für die Antworten.

Mich würde es aber interessieren, wie schaffe ich das PHP Antworten genau da zu setzen im HTML code wo ich will?

Zwar hat es im zweiten Beispielt geklappt aber ich musste die HTML Tabelle von der ersten Varianten entfernen.

Muss ich dann die ganzen HTML Befehle die in der Mitte sind mit echo Ausgeben?

Bsp.:

echo "Ausgabe";

oder geht das nicht?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Muss ich dann die ganzen HTML Befehle die in der Mitte sind mit echo Ausgeben?

Kannst du machen, machen auch manche, aber schön ist das nicht ;)

Ich empfehle hier, das Dokument in 2 Teile aufzuteilen. Den PHP-Teil oben und den HTML-Teil unten. Im PHP-Teil definierst du Klassen oder Funktionen, und im HTML-Teil werden die dann, falls benötigt, aufgerufen.

kleines Beispiel:


<?php

function doSomething() {
$result = "some";
$result.= " Text";
return $result;
}

function showSomething() {
return doSomething();
}

start_session();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
</head>
<title>Some page</title>
</head>
<body>
<h1>Some Title</h1>
<p>
Here is some Text
</p>
<p>
<?php
echo showSomething();
?>
</p>
</body>
</html>
[/php]

Nachtrag:

Dabei geben alle Funktionen die für eine Ausgabe sind nur die Ausgabe zurück, machen aber selber kein Echo o.ä. Alle Ausgaben erfolgen nur und ausschließlich im HTML-Teil. Am Ende des oberen PHP-Teils stehen dann die Funktionen, die am Anfang jeder Seite ausgeführt werden sollen, z.B. start_session();. Das kannst du auch ganz oben stehen haben, oder sonst wo, aber ich finde da ist es gut aufgehoben und leicht zu finden. Erst die Startinitialisierung o.ä. und dann HTML. Alles andere irgendwo darüber.

Bearbeitet von JesterDay
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...