• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Kleines Problemchen

Capfly

New member
Wenn ihr mal auf http://superflyger.com/login.html mit Usernamen "abc" und PW "123" einloggt, dann seht ihr dass die Arrays nicht erscheinen! Nur bei der REQUEST-Abfrage, sonst nicht!
Warum?
Mein Info-Lehrer weiß es auch nicht!
Hier der Q-Text:
PHP:
<html><head>
<title>Flight Center Germany</title>
<meta name="keywords" content="Flugzeuge, Flüge, Piloten, Simulation, FSX">
<meta name="description" content="Fliegen, Piloten, FSX">
<meta name="robots" content="index">
<meta name="robots" content="follow">

<link rel="stylesheet" type="text/css" href="arial3.css">

<style type="text/css"><!--
body {color:#000067; margin-left:0px; margin-right:0px; margin-top:0px; margin-bottom:0px; background-color:#3549E6; background-image:url(autobilder/vs_autohintergrund_1.jpg);}
a:hover {color:#502300;}
--></style>

<?php
 session_start();

 if (!$_SESSION['user']) {
 
 $_SESSION['hg'] = "1";//Hauptgebäude
 $_SESSION['sp'] = "1";//Speicher
 $_SESSION['l'] = "1";//Lehmgrube
 $_SESSION['s'] = "1";//Steinmine
 $_SESSION['hl'] = "1";//Holzfäller
 $_SESSION['bh'] = "1";//Bauernhof
 $_SESSION['sch'] = "0";//Schule
 $_SESSION['aph'] = "0";//Apotheke
 $_SESSION['bhp'] = "0";//Bischhofspalast
 $_SESSION['ks'] = "0";//Kaserne
 $_SESSION['einwohner'] = Math.round(($hg * 5) + ($sp * 5) + ($l * 5) + ($s * 5) + ($hl * 5) + ($bh * 0) + ($aph * 5) + ($sch * 5) + ($bhp * 5) + ($ks * 5));
 $_SESSION['punkte'] = Math.round(($hg * 20) + ($sp * 20) + ($l * 20) + ($s * 20) + ($hl * 20) + ($bh * 20) + ($aph * 20) + ($sch * 20) + ($bhp * 1000) + ($ks * 20));
 $_SESSION['maxi'] = Math.round($bh * $hg);
 $_SESSION['speicher'] = Math.round($sp * 1200);
 $_SESSION['user'] = $_REQUEST['user'];
 $_SESSION['pass'] = $_REQUEST['pass'];
 $_SESSION['r'] = "1";//Rang
 $_SESSION['h'] = "1000";//Holz
 $_SESSION['st'] = "1000";//Stein
 $_SESSION['lm'] = "1000";//Lehm
}

 if (($user == "abc") && ($pass == "123")) {
  echo
'<body><table bgcolor="#EBDCB3" bordercolor="black" border="1">
<tr align="justify">
 <td><a href="#"><font color="chocolate">Ausloggen</font></a></td>
 <td><a href="#"><font color="chocolate">Forum</font></a></td>
 <td><a href="#"><font color="chocolate">Hilfe</font></a></td>
 <td><a href="#"><font color="chocolate">Einstellungen</font></a></td>
 <td><a href="#"><font color="chocolate">Premium</font></a></td>
 <td><a href="#"><font color="chocolate">Rangliste</font></a><font color="chocolate"> (',$r,'.|',$punkte,')</font></td>
 <td><a href="#"><font color="chocolate">Clan</font></a></td>
 <td><a href="#"><font color="chocolate">Berichte</font></a></td>
 <td><a href="#"><img src="new.png" onClick="pic()" id="P1" border="0"> <font color="chocolate">Mails</font></a></td>
 <td><a href="#"><font color="chocolate">Freunde</font></a></td>
</tr>
</table><hr width="auto"><br>
<table bgcolor="#EBDCB3" bordercolor="black" border="1" align="left">
<tr>
 <td><font color="chocolate"><b>Willkommen ',$user,'!</b></font></td>
</tr>
</table>
<table bgcolor="#EBDCB3" bordercolor="black" border="1" align="right">
<tr>
 <td><font color="chocolate"><b>Stein: ',$st,'</b></font></td>
 <td><font color="chocolate"><b>Holz: ',$h,'</b></font></td>
 <td><font color="chocolate"><b>Lehm: ',$lm,'</b></font></td>
</tr>
</table><br><br>
<table bgcolor="#EBDCB3" bordercolor="black" border="1" align="right">
<tr>
 <td><font color="chocolate"><b>Speicher: ',$speicher,'</b></font></td>
 <td><font color="chocolate"><b>Einwohner: ',$einwohner,'/',$maxi,'</b></font></td>
</tr>
</table>
<table bgcolor="#EBDCB3" bordercolor="black" border="1">
<tr>
 <td><a href="#"><font color="chocolate">Alle Dörfer</font></a></td>
 <td><a href="#"><font color="chocolate">Landkarte</font></a></td>
 <td><a href="sicher.php?user=',$user,'&pass=',$pass,'"><font color="chocolate">',$user,'s Dorf</font></a><font color="chocolate"> (115|488)</font></td>
</tr>
</table></body>';}
else {
 echo
'<body><font color="red"><h1 align="center">Falsche Zugangsdaten!</h1></font><br>
<table bgcolor="#EBDCB3" bordercolor="black" border="1">
<tr>
 <td><a href="login.html">Hier kommst Du zurück!</a></td>
</tr>
</table></body>';}
?>
</html>
 
Welche Arrays??

Wenn du die Ausgabe der Variablen meinst,
z. B.
PHP:
Speicher: ',$speicher,'</b>

Nicht "," sondern "." wäre hier angebracht ;-)
 
Zuletzt bearbeitet von einem Moderator:
was denn für arrays? ich sehe in den Code den du gepostet hast keine...
vielleicht magst du auch mal ne bessere Problembeschreibung geben, und etwas Höflichkeit ist bestimmt nicht falsch, du klingst wie "hey ich hab hier ein Problem, löst es jetzt gefälligst!"...
was meinst du denn mit der Request-Abfrage?

btw. ist der Code nicht nur schlecht, sondern grottenschlecht...:d
 
Also Du weist $_SESSION["name"] irgendwelche Inhalte zu und gehst dann davon aus, dass Du einfach per $name darauf zugreifen kannst?
Wenn register_globals aus sind, dann kannst Du das nämlich knicken - und wenn der Hoster nicht ganz auf den Kopf gefallen ist, dann ist register_globals ausgeschaltet.
Und ja, der Code ist übel, auch die Optik sieht übel aus. Und diese mehrzeiligen Echo-Strings sind ganz übel.
 
Welche Arrays??

Wenn du die Ausgabe der Variablen meinst,

Nicht "," sondern "." wäre hier angebracht ;-)

Ja, meinte Variablen, sry, hatte grade was ganz anderes im Kopf...:rolleyes:

Ich hätte ja auch wirklich etwas höflicher fragen können, aber ich stand unter Zeitdruck, das mit dem '.$speicher.' hatte ich auch schon ausprobiert...leider ohne Erfolg:(

Jetzt der höfliche Teil:
Bitte helft mir bei dem Problem, das ich habe, welches folgendes ist:
Ich dachte man könne darauf zugreifen, mir ist aufgefallen, dass der Username, etc. bei den $_SESSION['user'] = $_REQUEST['user']; angezeigt wird, allerdings nicht bei den normalen $_SESSION = "100"; usw. ... .
Könnte mir jemand eine mögliche Lösung für mein Problem sagen, aber bitte ohne Kritik über das Script! (Bin noch Anfänger^^).

MfG
~Capfly
 
1. mit $_REQUEST sollte man nicht arbeiten, nutze stattdessen $_POST und $_GET

2. Quakenet/#php Tutorial - de - Sessions

3. auf Sessionvariablen, $_POST, $_GET greift man auch nur direkt zu, selbst wenn php die gleich als Variable definiert...

4. session_start sollte immer als erstes stehen, noch bevor irgendeine Ausgabe gemacht wird

5. deine "sichere Seite" sollte so in der art beginnen, so prüfst du, ob ein Nutzer angemeldet ist

PHP:
session_start();
        if(!isset($_SESSION['user']) ){
               header("location:index.php");
               die;
}
zusätzlich kann man noch die IP-Adresse in die Session speichern um Session-Diebstahl zu erschweren

ich hoffe, dass hilft dir erstmal weiter, ansonsten nochmal melden, aber bitte den code der login.php oder wie sie auch immer heißt mit posten
 
Danke für Deine Hilfe, ich werds mal versuchen und wenn ich Fragen habe, dann melde ich mich nochmal, danke.:)
 
wieso sollte man nicht mit $_REQUEST arbeiten? je nach situation ist das durchaus angebracht.
 
Ich habe es jetzt erstmal so gemacht:
PHP:
<html>
<?php
session_start();
 $_SESSION['user'] = $_REQUEST['user'];
 $_SESSION['pass'] = $_REQUEST['pass'];
 if(($user == "Capfly") && ($pass == "...")){
 $_SESSION['start'] = 1;}

 if(!isset($_SESSION['start'])){
echo 'Login incorrect! <a href="index.php">Zurück</a>';}
else {
 echo '<body>Sry! Wir sind gerade dabei die Seite etwas zu bearbeiten.<br>Bitte versuche es in wenigen Minuten nochmal!';}
?>
</html>

Meine Frage:
Wie kann ich es anrichten, dass wenn jemand aktualisiert, automatisch erkannt wird, ob man eingeloggt ist oder nicht? Mit Cookies?

Danke schonmal.
 
Die Session geht bei F5, bzw. Site reload nicht verloren. Wenn er jedoch die Seite schließt muss er sich neu einloggen.
Da bräuchtest du dann Cookies
 
Die Session geht bei F5, bzw. Site reload nicht verloren. Wenn er jedoch die Seite schließt muss er sich neu einloggen.
Da bräuchtest du dann Cookies

Bei mir kommt eine Meldung dass ich die Daten erneut senden muss.
Da sind zwei Buttons, einer mit Erneut senden und einer mit Abbrechen.
Denn wenn ich nicht gefragt werde ist es dem PC so, als ob wenn ich den Browser bereits schloss...

Was mache ich falsch?
 
Ja das handelt sich dabei um deine $_REQUEST Daten. Denn diese hat er ja noch im Cache. Aber warum sollte der Nutzer eine gerade angezeigte Seite neuladen?
 
Er soll später auch Nachrichten von anderen Nutzern erhalten können...
Deshalb benötige ich das Aktualuisieren
 
dann mußt du auf einer Seite die Request-Daten verarbeiten und den Benutzer anschließend auf eine andere seite weiterleiten
header("Location: www.seite.de");
 
Wie kann ich es anrichten, dass bei der Weiterleitung diese Daten erneut an die andere Seite weitergeleitet werden?
Also damit sie erneut geprüft werden und nicht jemand einfach oben in der Adressleiste ".php?village=0000000001" eingibt?
Wenn ich das mit header(Location) etc. mache, dann leitet der mich nicht weiter???
 
Zuletzt bearbeitet:
Du könntest es so einrichten, dass du die Daten abgreifst, also prüfst ob deine $_REQUEST leer sind, aber ein Cookie, bzw. eine Session angelegt ist, wenn ja, dann leite sie auf die gleiche Seite, nur ohne die Request Daten weiter, wenn nicht -> Weiterleitung auf Login.
Somit nutzt es keinen wenn er die Parameter gleich eingibt.
Außerdem könntest du deine Formulare mit POST übertragen und statt $_REQUEST $_POST verwenden, dann kann man diese Parameter eh nicht mittels GET, also anhängen der Parameter an die URL übertragen.
 
Eine Session vergeben und diese den Links anhängen:
PHP:
<a href="index.php?<?php echo SID; ?>">Startseite</a>
 
Muss ich die SID nicht erst erstellen, wie mache ich das?
Sry.

Wäre das ansonsten so korrekt?:
PHP:
<html>
<style>
<!--
a:hover{color:white};
-->
</style>
<?php
session_start();
 $_SESSION['user'] = $_POST['user'];
 $_SESSION['pass'] = $_POST['pass'];
 if(($user == "Capfly") && ($pass == "...")){
 $_SESSION['start'] = 1;}

 if(!isset($_SESSION['start'])){
echo '<body link="black" alink="black" vlink="black" bgcolor="#000067">Login incorrect! <a href="navigation.html">Zurück</a></body>';}
else {
 echo '<body link="black" alink="black" vlink="black"><a href="index.php?<?php echo SID; ?>">Startseite</a></body>';}
?>
</html>
 
Zuletzt bearbeitet:
Mit
Code:
session_start();
hast du die SID erstellt ;-)
Du kannst natürlich eine eigene Session ID generieren um dich vor Sessionhijacking abzusichern, aber ich glaube bei deiner Website ist das nicht notwendig.
 
Zurück
Oben