ohne login die geschützte seite per link erreichbar.

[SIZE=7]ERLEDIGT![/SIZE]

hey leute. mein wissen ist sehr gering zwecks php. allerdings sieht das momentan bei mir so aus:

(checklogin.php login check)
[PHP]<?php

$host=‚MEINHOST‘; // Host name
$username=‚MEINUSER‘; // Mysql username
$password=‚MEINPW‘; // Mysql password
$db_name=‚MEINDBNAME‘; // Database name
$tbl_name=‚DIEDBTABLENAME‘; // Table name

// Connect to server and select databse.
mysql_connect($host, $username, $password);
mysql_connect($db_server, $db_benutzer, $db_passwort);
mysql_select_db($db_name)or die(„cannot select DB“);

// username and password sent from form
$myusername=$_POST[‚myusername‘];
$mypassword=$_POST[‚mypassword‘];

// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql=„SELECT * FROM $tbl_name WHERE username=‚$myusername‘ and password=‚$mypassword‘“;
$result=mysql_query($sql);

// Mysql_num_row counting
$count=mysql_num_rows($result);

// row match
if($count==1){

// Register $myusername, $mypassword and redirect to file „login_success.php“
session_register(„myusername“);
session_register(„mypassword“);
header(„location:index_welcome.html“);
}
else {
header(„location:loginwrong.html“);
}
?>[/PHP]

auf der seite die nur durch login sichtbar sein soll befindet sich im head:

(index_auswahl.html check ob eingelogged, wenn nicht: )
[PHP]<?php session_start(); if(!session_is_registered(myusername)){ header("location:index.html"); } ?>[/PHP]

das login generell funktioniert… bedeutet, er fragt ab und gibt auch wenn richtig die richtige redirection. wenn nicht, dann die richtige errorpage.

wie bekomme ich das hin das die seite extern nicht mehr erreichbar ist wenn nicht eingelogged?
probiert hab ich auch logout und dann nochmal die seite aufrufen.

ausloggen tut er übrigends mit:
(logout.html)
[PHP]

<?php session_start(); session_destroy(); ?>[/PHP]

hat jemand eine idee?

Gruß, SicKnature

edit:

mittlerweile auch md5 gesichert das passwort… also kleine änderung gewesen im script was aber nicht die welt ist. was mich halt nur wundert, wieso wird die session nicht gespeichert? vom user?

edit2:

cookie wird allerdings auch erstellt… aber beim destroy nicht gelöscht und auch wenn du keinen cookie hast kommst du generell auf den geschützen content.

ich hab die php scripts mittlerweile auch schon vor dem html gepackt, also 1. zeile.

okay, ich habe rausgefunden das es session_register garnicht mehr gibt.

mein problem jetzt, ich müsste das dann also doch

[PHP]session_register(„myusername“);
session_register(„mypassword“); [/PHP]

mit
[PHP]$_SESSION(„myusername“) = $myusername;
$_SESSION(„mypassword“) = $mypassword; [/PHP]
austauschen oder? (wobei ich hiermit doch das passwort im cookie speicher… wenn ich mich jetzt nicht irre was eigtl ja unsinn ist)

ich glaube ich brauch hier wirklich ne dicke hilfe :smiley: wenn jemand sich freiwillig meldet per skype oder co etwas auszuhelfen will/kann wäre super. muss natürlich nicht sein.
ich geb euch hier nochmal die relevanten codes (im ganzen und zensiert)

checklogin:
[PHP]<?php
$host=‚hier könnte ihre werbung stehen‘; // Host name
$username=‚hier könnte ihre werbung stehen‘; // Mysql username
$password=‚hier könnte ihre werbung stehen‘; // Mysql password
$db_name=‚hier könnte ihre werbung stehen‘; // Database name
$tbl_name=‚hier könnte ihre werbung stehen‘; // Table name

// Connect to server and select databse.
mysql_connect($host, $username, $password);
mysql_connect($db_server, $db_benutzer, $db_passwort);
mysql_select_db($db_name)or die(„cannot select DB“);

// username and password sent from form
$myusername=$_POST[‚myusername‘];
$mypassword= md5 ($_POST[‚mypassword‘]);

// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql=„SELECT * FROM $tbl_name WHERE username=‚$myusername‘ and password=‚$mypassword‘“;
$result=mysql_query($sql);

// Mysql_num_row counting
$count=mysql_num_rows($result);

// row match
if($count==1){

// Register $myusername, $mypassword and redirect to file „login_success.php“
// $_SESSION[„myusername“] = $myusername;

session_register(„myusername“);
session_register(„mypassword“);
header(„location:index_welcome.html“);
}
else {
header(„location:loginwrong.html“);
}
?>[/PHP]

dann die page mit content und menüs:
[PHP]<?php session_start(); ?>

<?php session_start(); if(!session_is_registered(myusername)){ header("location:index.html"); } ?>
<title>Login</title> 

<script src="build/jquery.js"></script> 
<script src="build/mediaelement-and-player.min.js"></script>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/iframe.js"></script>
<link rel="stylesheet" href="build/mediaelementplayer.min.css" />
<link rel="stylesheet" type="text/css" href="css2/style.css">
<link rel="stylesheet" type="text/css" href="css/demo.css">
<link rel="stylesheet" type="text/css" href="css2/menu.css">
<link rel="stylesheet" type="text/css" href="css2/frame.css">
<link rel="stylesheet" type="text/css" media="all" href="css2/master.css" />



<style>

/* #container {

}
#links{

    margin-right:0%;
    width: 33%;
    float:left;
}
#mitte{
    margin-top:200px;
    width: 33%;
    margin-left:33%;
    margin-right:33%
}
#rechts{

    padding-right:0%;
    float: right;
    width: 33%;
} */
<?php } else { header("location:index.html"); } ?> [/PHP]

und der logout:

[PHP]<?php session_start(); session_destroy(); ?>

<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="author" content="">
<link rel="shortcut icon" href="img/favicon.png">
<link rel="stylesheet" type="text/css" href="css/demo.css">
<link rel="stylesheet" type="text/css" href="css2/menu.css">
<link rel="stylesheet" type="text/css" href="css/signin.css">
<title>Logged Out</title>


  <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
  <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>

unwichtig nur das „design“ des logout screens

[/PHP]

ich blick es gerad selber nicht mehr… aber es ist ja auch schon halb 5. ich hoffe hier hat jemand einen wagen durchblick und kann mir helfen, skype, teamspeak, teamviewer alles vorhanden. ich danke!

gruß SicKnature

Zum Thema Login mit MySQL und Sessions gibt es endlos viele Tutorials im Netz, bitte mal google mit

php mysql session login

füttern.

ich hab mich schon durch sämtliche tutorials durchgefressen, und jeder erklärt es auf einen anderen weg, die meisten mit session_register genau das ist mein problem.
ich verstehe nicht wieso das nicht funktioniert, ich bin den code mittlerweile 1000ende mal durch gegangen, und immer wieder entgeht es mir.

gruß

Sehr witzig! Wenn ich google füttere, habe ich direkt beim ersten Treffer ein Login ohne session_register!

Dein Script hat eine Sicherheitslücke auf deiner ‚verschlüsselten‘ Content-Page. Ein Angreifer muss auf ein Header-Redirect nicht eingehen und kann sich den Inhalt trotzdem anzeigen lassen. Deshalb ist es wichtig direkt nach der header-Anweisung ein exit; folgen zu lassen.

ich habe gesagt die meisten. nicht alle. ich konnte das soweit nicht übertragen. wie gesagt. ich habs probiert… und ich google vorher, und ich frage freunde vorher, und ich suche mir die definitionen raus wenn ich was nicht weiß, und ich suche vorher. aber wenn ich es nicht hinbekomme, bekomme ich es nicht hin oder?.

alles klar das werd ich mir auf jedenfall mal merken.

Das kann ich mir echt nicht vorstellen.

Man sieht aber noch nicht mal ansatzweise, dass du es mit dem Umschreiben auf $_SESSION versucht hast.

wenn ich sage ich habs probiert, dann hab ichs probiert. ich hab das im nachhinein bearbeitet gehabt (den post nachdem ich es probiert hatte)

es funktioniert jetzt… danke. (lag nicht nur an dem session umschreiben)