php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 12.04.2009, 20:56  
Neuer Benutzer
 
Registriert seit: 12.04.2009
Beiträge: 9
PHP-Kenntnisse:
Anfänger
scarry_77 befindet sich auf einem aufstrebenden Ast
Standard erst beim zweiten Login funktioniert Link

Hallo zusammen,

als Neuling mit PHP habe ich ein Problem mit dem Sessionmanagment.

Kurzer Überblick:

Es funktioniert der Login mit Hilfe einer mysql-DB in den geschützten Bereich. Von dort aus kommt der User über einen Link zu einer weiteren geschützten Seite (input.php) und kann dort mit einem Formular diverse Dinge in eine mysql-Tabelle schreiben. Mit dem Abschicken des Formulars wird eine andere Seite (seite2.php) geöffnet, wo mit einem Link zur vorherigen Seite gewechselt werden kann.
Dort liegt auch das Problem:

Im Moment wird der User diesen Link nicht zu Formulareingabe geschickt, sondern wieder in auf die Loginseite.
Meldet er sich jetzt ein zweites Mal an, funktoniert der Link zur Formulareingabe ohne Probleme.

Ich hatte den Link zur Formularseite erst ohne session-ID verschickt, dann hab ich es wie unten stehend probiert. Bis jetzt ohne Erfolg.


seite2.php
PHP-Code:
<? echo "Die Session-ID ist:".$session?>
<a href="http://homepage.de/ordner/input.php?<?php echo htmlspecialchars(SID); ?>"><p>neuen Datensatz 

eingeben</p></a></br>
<a href="http://homepage.de/logout.php"><p>logout</p></a>
input.php
PHP-Code:
<?php 
session_start 
(); 
if (!isset (
$_SESSION["UserID"])) 
header ("Location: /anmelden.php"); } 
?>
Ich hoffe mir kann dazu jemand weiterhelfen!

Danke,
scarry

Geändert von scarry_77 (12.04.2009 um 21:04 Uhr).
scarry_77 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 12.04.2009, 21:01  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Hmm, das ist zu wenig Code um etwas zu mögichen Fehlerursachen sagen zu können.
Ich vermute mal das die Session in falscher Reihenfolge gesetzt und ausgelesen wird und es deshalb dazu kommt, das der Login zweimal nötig wird. Poste mal bitte etwas mehr Code!
Asipak ist offline  
Alt 12.04.2009, 21:16  
Neuer Benutzer
 
Registriert seit: 12.04.2009
Beiträge: 9
PHP-Kenntnisse:
Anfänger
scarry_77 befindet sich auf einem aufstrebenden Ast
Standard

hier der Code der involvieren Seiten:

checklogin.php
PHP-Code:
<?
mysql_connect
($host,$dbusername,$dbpass) or die ("keine Verbindung zur Datenbank!");
mysql_select_db($db_name) or die("Datenbank nicht verfügbar!");

$UserName $_POST['UserName'];
$UserPass $_POST['UserPass'];

$UserPass5 MD5($UserPass);

$sql "SELECT * FROM users WHERE UserName = '$UserName' and UserPass = '$UserPass5'";

$result mysql_query($sql);

$count mysql_num_rows($result);

if (
mysql_num_rows ($result) > 0


    
$data mysql_fetch_array ($result); 

    
session_start();

    
$_SESSION["UserID"] = $data["UserID"]; 
    
$_SESSION["UserName"] = $data["UserName"];
    
$_SESSION["UserPass"] = $data["UserPass"];
    
$_SESSION["Name"] = $data["Name"];
     
header("Location:angemeldet.php");
}
 
else { 

    
header("Location:anmeldenfg.php");
 
}

?>
angemeldet.php
PHP-Code:
<?
session_start
();
if(!
session_is_registered(UserName)){
    
header("location:anmelden.php");
}
?>



<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>infinitri login</title>
<link rel="stylesheet" href="layout.css" type="text/css" charset="utf-8" />
</head>

<body>
<div id="frame">
<div id="frame1">
    
    <div id="head">
        <div id="menue">
             <a class="linkm" href="http://www.php.de/ordner/input.php">zum Formular</a>&nbsp;&nbsp;|&nbsp;&nbsp;

input.php
PHP-Code:
<?php 
session_start 
(); 
if (!isset (
$_SESSION["UserID"])) 
header ("Location: /anmelden.php"); } 
?> 

<?
$datum1 
date(Y);
$datumpre date(Y)-1;
$datumpost date(Y)+1;
?>

<head>

.
.
Html
.
.
<form method="POST" action="seite2.php" name="form1">
.
.
<tr><td><input type="submit" value="abschicken" name="submit">
</table>
</form>
.
.
Html
.
.
und seite2.php
PHP-Code:
<?php
session_start
();
$session session_id();
if (!isset (
$_SESSION["UserID"])) { 
header ("Location: /anmelden.php"); } 
?>

if($_POST["submit"] == "abschicken") { 

$senden = "INSERT INTO .....
} else {
    
    header("Location:input.php");
}

?>


<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>TEST</title>
</head>

<body>

<?php 

if (!mysql_query($senden,$dbh))
  {
  die(
'Fehler: ' mysql_error());
  }

$sql mysql_query("SELECT * from tabelle");

$count mysql_num_rows($sql);

if (
$count==1){
echo 
"<h1>Datensatz wurde angelegt! Den ersten Datensatz haben wir!</h1>";    
} else {
echo 
"<h1>Datensatz wurde angelegt! Zur Zeit haben wir " .$count" Datens&auml;tze.</h1>";
}
?>
<? 
echo "Die Session-ID ist:".$session?>
<a href="http://homepage.de/ordner/input.php?session=<? echo $session?>"><p>neuen Datensatz eingeben</p></a></br>
<a href="http://homepage.de/logout.php"><p>logout</p></a>

</body>
</html>
scarry_77 ist offline  
Alt 12.04.2009, 21:31  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Hmm, joa

Was mir aufgefallen ist in der Datei checklogin.php: session_start() gehört an den Anfang einer Datei, Auch Leerzeichen oder Zeilenumbrüche sind nicht erlaubt:

PHP-Code:
<?php
session_start
();
//weiter im Text
//..
?>
und wieso verwendest du unterschiedliche Abfragemethoden ob eine Sessionvariable exisitert

PHP-Code:
if (!isset ($_SESSION["UserID"])) { 
header ("Location: /anmelden.php"); } 
und
PHP-Code:
if(!session_is_registered(UserName)){
    
header("location:anmelden.php");

Das verwirrt ja nur
Asipak ist offline  
Alt 13.04.2009, 20:14  
Neuer Benutzer
 
Registriert seit: 12.04.2009
Beiträge: 9
PHP-Kenntnisse:
Anfänger
scarry_77 befindet sich auf einem aufstrebenden Ast
Standard

Hallo Asipak,

so, habe die checklogin.php entsprechend geändert. Die init der session in seite2.php wurde auch geändert:

PHP-Code:
if (!isset ($_SESSION["UserID"])) { 
header ("Location: /anmelden.php"); } 

Das Problem besteht weiterhin. Ist es möglich, dass ich eine Änderung in der php.ini vornehmen muss? Oder den ganzen Aufbau der session ändern? Wie gesagt, beim zweiten Mal einloggen funktioniert ja alles komischerweise...

Grüße,
scarry
scarry_77 ist offline  
Alt 14.04.2009, 00:35  
Erfahrener Benutzer
 
Benutzerbild von leonv
 
Registriert seit: 12.01.2009
Beiträge: 344
PHP-Kenntnisse:
Fortgeschritten
leonv befindet sich auf einem aufstrebenden Ast
Standard

Wieso fragst du zwei mal die Anzahl der Antworten ab?
PHP-Code:
$count mysql_num_rows($result); //Anzahl Antworten

if ($count == 1){ 

    
$data mysql_fetch_assoc($result); 

    
$_SESSION["UserID"] = $data["UserID"]; 
    
$_SESSION["UserName"] = $data["UserName"];
    
$_SESSION["UserPass"] = $data["UserPass"];
    
$_SESSION["Name"] = $data["Name"];
     
header("Location:angemeldet.php");

Evtl. noch den Inhalt der Sessionvariable ausgeben lasse, ob gesetzt wurde, wenn es nicht funktioniert.
__________________
Kreativität und Schöpfung durch Chaos und Ordnung.

Geändert von leonv (14.04.2009 um 12:03 Uhr). Grund: Antwort ging am Thema vorbei...
leonv ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Forum Login per curl leb0rtran PHP Tipps 2008 1 19.03.2008 12:47
IE5 link futzt net, rechte Maus + link öffnen geht hackenbusch HTML, Usability und Barrierefreiheit 1 03.01.2007 00:48
[Erledigt] Login funktioniert nicht wenn cookies deaktiviert drotz sess PHP Tipps 2006 3 31.10.2006 13:34
Session Logout Login Navigation TailerD PHP Tipps 2006 10 24.06.2006 17:12
Link funktioniert nicht Filewalker HTML, Usability und Barrierefreiheit 8 25.02.2006 23:55
Bildrollover ohne Link im IE (FF funktioniert) HTML, Usability und Barrierefreiheit 16 13.02.2006 08:52
Daten aus MySQL-abfrage zum Link mit id zusammensetzen maccoder Datenbanken 2 13.09.2005 16:49
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
[Erledigt] Login klappt nicht korrekt PHP-Fortgeschrittene 11 22.07.2005 22:49
phpBB login funktioniert nicht. PHP Tipps 2005 3 31.03.2005 17:12
login mit session id PHP Tipps 2005 10 26.01.2005 12:32
Login funktioniert mit MD5 nicht PHP Tipps 2004-2 8 13.12.2004 19:32
Über Link einen Zeile aus Tabelle löschen Calli PHP Tipps 2004-2 24 03.12.2004 13:35
Login PHP Tipps 2004 9 13.08.2004 11:10
active link Farbe funktioniert nicht??! PHP Tipps 2004 18 10.08.2004 03:29

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php login erst beim zweiten mal, login erst beim zweiten mal, php login doppelt, sql anmeldung klappt erst beim 2, php login funktioniert erst beim zweiten mal, login zweimal, php session problem anmeldung funktioniert erst beim zweiten mal, php session erst beim zweiten mal, windows anmeldung klappt erst beim 2 mal, login erst beim 2.mal, html login link, login link php, php login geht erst beim zweiten versuch, session funktioniert erst beim 2 ten mal, php sessions zweimal nötig, warum zweimal einloggen php sessions, php mysql login zweimal, ie \login erst beim zweiten mal\, erst beim zweiten mal einloggen funktioniert, php login klappt erst beim zweiten mal

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:37 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum