php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
URL mit Sessions ID von Nutzern..


 
ssmiletkzi
15-02-2015, 01:42 
 
Hallöchen Forum,

habe mal einen bescheidene Frage.
gibt es bestimmt schon mein Thema ich iwie komme ich nicht weiter mit allem was mir helfen konnte..

Mein Problem:

Ich versuche seite Tagen mein Loginscript so zu erweitern dass zum Beispiel wenn man eingeloggt ist dieser link erscheint : http://meinedomain.de/login/myprofil.php?nutzername (hier soll dann der nutzername hin)

bis jetzt kommt bei mir : http://domain.de/login/myprofil.php?session=


<?php
error_reporting(E_ALL);
include("mysql.php");
include("functions.php");

// Session starten
session_start();
include("autologout.php");

if(isset($_POST['submit']) AND $_POST['submit']=='Einloggen'){
// Falls der Nickname und das Passwort übereinstimmen..
$sql = "SELECT
ID
FROM
User
WHERE
Nickname = '".mysql_real_escape_string(trim($_POST['Nickname']))."' AND
Passwort = '".md5(trim($_POST['Passwort']))."'
";
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
// wird die ID des Users geholt und der User damit eingeloggt
$row = mysql_fetch_assoc($result);
// Prüft, ob wirklich genau ein Datensatz gefunden wurde
if (mysql_num_rows($result)==1){
doLogin($row['ID'], isset($_POST['Autologin']));
echo "<p>Willkommen <font style='color:#ff0000;'>".$_SESSION['Nickname']."</font></p>\n";
echo "<font style='color:#00ff00;'>Du wurdest erfolgreich eingeloggt.<br></font>\n<br>".
" <a href=\"player\" style='color:#069;' target=\"_blank\">Webradio</a> | <a href=\"#\" style='color:#069;'></a> | <a href=\"myprofil.php?session=$session\" target=\"_blank\" style='color:#069;'> Mein Profil </a> | <a href=\"logout.php\" style='color:#069;'>Ausloggen </a><br>";
}
else{
echo "<b>Du konntest nicht eingeloggt werden.</b><br>\n".
"<font style='color:#ff0000;'>Benutzername</font> oder <font style='color:#ff0000;'>Passwort fehlerhaft.</font><br>\n".
"Zurück zum <a style='color:#069;' href=\"".$_SERVER['PHP_SELF']."\">Login-Formular</a>\n";
}
}

else{
echo "<form ".
" name=\"Login\" ".
" action=\"".$_SERVER['PHP_SELF']."\" ".
" method=\"post\" ".
" accept-charset=\"ISO-8859-1\">\n";
echo "<input type=\"text\" name=\"Nickname\" maxlength=\"32\" placeholder=\"Benutzername:\" style=\"border-radius:10px;\" autocomplete=\"off\">\n";
echo "<br>\n";
echo "<input type=\"password\" name=\"Passwort\" placeholder=\"Passwort:\" style=\"border-radius:10px;\" autocomplete=\"off\">\n";
echo "<br>\n";
echo "eingeloggt bleiben :\n";
echo "<input type=\"checkbox\" name=\"Autologin\" value=\"1\">\n";
echo "<br>\n";
echo "<input type=\"submit\" name=\"submit\" value=\"Einloggen\" style=\"border-radius:10px;\">\n";
echo "<br>\n</td>";
echo "</form>\n";
}Ich hoffe ihr habt Tipps für mich , ich verzweifel gleich:confused:

 
wahsaga
15-02-2015, 02:43 
 
Die Ausgabe dieses Links ist die absolut einzige Stelle in deinem Script, wo $session verwendet wird – wo soll denn da diese Variable mit einem Wert belegt worden sein …?

Btw., so viel HTML-Code mit echo auszugeben ist hässlich und umständlich. Schließe lieber den PHP-Bereich, schreibe „normales“ HTML, und öffne den PHP-Bereich nur an den Stellen wieder, wo du ihn bspw. für die dynamische Ausgabe von Werten brauchst … dann brauchst du auch nicht so viele Anführungszeichen escapen. Lies dir mal http://php.net/manual/de/language.basic-syntax.phpmode.php durch.

 
ssmiletkzi
15-02-2015, 12:15 
 
:danke:
so habe es jetzt übersichtlicher gemacht.

wie war das denn noch mal mit der Datenbank Abfrage ?


<?php
$sql = ("SELECT FROM user WHERE Nickname = '".mysql_real_escape_string(trim($_POST['Nickname']))."');

$result = mysql_query($sql) OR die ("<pre>/n" .$sql. "</pre>/n" . myssql_error());

$row = mysql_fetch_assoc($result);

?>
und jetzt komme ich net weiter , weiß jetzt nich wie ich den User in $row bekomme und anschließend als url ausgeben kann (domain.de/login/username)

Hier jetzt der etwas veränderte Code:


<?php
error_reporting(E_ALL);
include("mysql.php");
include("functions.php");

// Session starten
session_start();
include("autologout.php");

if(isset($_POST['submit']) AND $_POST['submit']=='Einloggen'){
// Falls der Nickname und das Passwort übereinstimmen..
$sql = "SELECT
ID
FROM
User
WHERE
Nickname = '".mysql_real_escape_string(trim($_POST['Nickname']))."' AND
Passwort = '".md5(trim($_POST['Passwort']))."'
";
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
// wird die ID des Users geholt und der User damit eingeloggt
$row = mysql_fetch_assoc($result);
// Prüft, ob wirklich genau ein Datensatz gefunden wurde
if (mysql_num_rows($result)==1){
doLogin($row['ID'], isset($_POST['Autologin']));
echo "<p>Willkommen <font style='color:#ff0000;'>".$_SESSION['Nickname']."</font></p>\n";
echo "<font style='color:#00ff00;'>Du wurdest erfolgreich eingeloggt.<br></font>\n<br>".
" <a href=\"player\" style='color:#069;' target=\"_blank\">Webradio</a> | <a href=\"#\" style='color:#069;'></a> | <a href=\"myprofil.php?session=$session\" target=\"_blank\" style='color:#069;'> Mein Profil </a> | <a href=\"logout.php\" style='color:#069;'>Ausloggen </a><br>";
}
else{
echo "<b>Du konntest nicht eingeloggt werden.</b><br>\n".
"<font style='color:#ff0000;'>Benutzername</font> oder <font style='color:#ff0000;'>Passwort fehlerhaft.</font><br>\n".
"Zurück zum <a style='color:#069;' href=\"".$_SERVER['PHP_SELF']."\">Login-Formular</a>\n";
}
}

else{


echo "<form ".
" name=\"Login\" ".
" action=\"".$_SERVER['PHP_SELF']."\" ".
" method=\"post\" ".
" accept-charset=\"ISO-8859-1\">\n";

?>
<input type="text" name="Nickname" maxlength="32" placeholder="Benutzername:" style="border-radius:10px;" autocomplete="off"><br>
<input type="password" name="Passwort" placeholder="Passwort:" style="border-radius:10px;" autocomplete="off"><br>
eingeloggt bleiben :
<input type="checkbox" name="Autologin" value="1"><br>
<input type="submit" name="submit" value="Einloggen" style="border-radius:10px;"><br>
<?php echo "</form>";
}
$session = session_id();
?>


;(

Noch ein Hinweis dieses Script habe ich net selbst gemacht da ich dazu keine Zeit habe , habe allerdings kleine Änderungen vorgenommen.

 
wahsaga
15-02-2015, 14:11 
 
Mit der gezeigten Query bekommst du den Usernamen gar nicht, weil du ihn überhaupt nicht selektiert hast …

Wenn du an fertigen Scripten herum basteln willst, wirst du trotzdem ein bisschen Grundlagenwissen brauchen, ohne das wird es nichts.

 
ssmiletkzi
15-02-2015, 16:06 
 
Naja bin eigentlich lieber jemand der an CSS Stylesheets bastelt.

PHP Code nur wenn es unbedingt sein muss was in diesem Fall der Fall ist

Aber mit Jquery oder Javascript bin ich nicht so der Freund davon.
Obwohl es mit DW CC 14 etwas vereinfacht wird.

Meistens bekomme ich bei meinem Scripten die ich erstelle nur rote Makierungen die eigentlich nicht dort sein sollen wo die sind sind im regelfall nur syntax fehler und auch meistens bei if / else abfragen.

Vergess ab und zu die bescheidenen Klammern und dies mag Dreamweaver überhupt nicht.

Zurück zum eigentlichen Problem.

bei php-einfach.de hab ich was gelesen mit Get Variablen ($GET = ["session"] ) dies ist nämlich das was noch undefiniert ist weil ich da net weiter komme, falls das überhaupt sinn macht Get Variablen zu erstellen..

Sinvoll oder sinnlos ?

($session = session_id )
Sorry dass ich gerade etwas vom Thema abgleitet bin

 
h3ll
15-02-2015, 19:40 
 
Ob das so schlau ist an Software rumzubasteln, die man nicht versteht? Vor allem wenn du ohne Ahnung an einem Login rumbastelst, kannst du das mit dem Login eigentlich gleich sein lassen und alles jedem zugänglich machen. Denn die Wahrscheinlichkeit, dass du Sicherheitslücken einbaust, ist ziemlich hoch.

 
ssmiletkzi
15-02-2015, 20:40 
 
Wer sagt den dass ich keine Ahnung davon habe, ich weiß schon wie das Loginscript funktioniert schließlich habe ich die ganzen echo´s der Usernamen mit eingebaut das war nicht standard mäßig drin (<?php echo $_SESSION['Nickname']; ?>) und in der regestrierung habe ich einige sachen erweitert und es funktioniert einwandfrei ^^, da kommt zwar noch mehr rein aber fürs erste reicht es ja , die neuen felder können dann meine User selbst erweitern bzw selbst entscheiden welche daten sie angeben wollen.

In der Regestrierung war nur das normale Benutzername und Passwort wählen...

Jetzt haben die User die Variante folgende Sachen anzugeben...

--> Email (Pflicht)
--> AIM
-->Wohnort
--> Homepage
--> Email anzeigen oder verstecken
--> MSN
--> YIM
--> usw.

Ich mag es auch nicht alle Daten von den Usern zu erzwingen bin ja nicht Facebook, deshalb können die sich es ja auch aussuchen was se angeben wollen oder nicht.

Hauptsache die wichtigsten Daten habe ich ... Passwort , Email und Nutzername der Rest ist freiwillig..

Muss dann nur noch gucken was mit der Passwort-vergessen.php nicht stimmt da macht es nicht das was es soll. Bekomme ich aber alleine hin ;)

Das Wissen wie man den nutzer als Url wiedergibt muss ich ehrlich zugeben kenne ich net bzw. behersche ich nicht.

Ich kann mich noch daran erinnern dass ich es mal geschafft hatte aber ich weiß nicht mehr wie war vor ca einem Jahr. Dann hatte ich nämlich domain.de/djsven und das so hinzubekommen ist jetzt mein Ziel und habe auch da schon ne Idee

 
h3ll
15-02-2015, 20:43 
 
Wer sagt den dass ich keine Ahnung davon habe, ich weiß schon wie das Loginscript funktioniert schließlich habe ich die ganzen echo´s der Usernamen mit eingebaut das war nicht standard mäßig drin (<?php echo $_SESSION['Nickname']; ?>)

Wunderbar, und hast damit gleich deine erste Sicherheitslücke gebaut.

Werte, die in HTML-Code ausgegeben werden, müssen immer mit htmlspecialchars() maskiert werden.

und in der regestrierung habe ich einige sachen erweitert und es funktioniert einwandfrei ^^

Es ist häufig so, dass es für denjenigen, der die Fehler in Anwendungen macht, die Anwendung funktioniert. Sonst würde es keine fehlerhaften Anwendungen geben, wenns der Programmierer selber erkannt hätte ;)

 
ssmiletkzi
15-02-2015, 20:49 
 
Stimmt wo du recht hast haste halt recht. jetzt weiß ich was ich eigentlich machen wollte danke für den Tipp:danke:

melde mich wieder wenn ich ein bissel weiter bin...

in meinen Login und Regstrierung habe ich die htmlspecialchars() verwendet ^^


.....

Ich kanns doch noch ^^ funktioniert username wird als Link ausgeben einfach : <a href=\"myprofil.php?id=".$row['Nickname']."\">".$row['Nickname']."</a>\n

 
h3ll
15-02-2015, 22:02 
 
Und hier hast du wieder zweimal htmlspecialchars() vergessen und einmal urlencode().

-archiv-

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:07 Uhr.