Mi a baj a kódban?

Figyelt kérdés

<?php

session_start();

ob_start();

include("inc/connect.php");


if (isset($_SESSION["bejelentkezve"])) {

ob_end_clean();

header("location: index.php?kezdolap");

die();

}


?>



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>Hu-Játék Főhonlapja</title>

<meta name="keywords" content="kulcszavak vesszővel elválasztva">

<meta name="description" content="egy bővített mondat">

<META http-equiv="Content-Language" CONTENT="HU">

<META name="Robots" content="index,follow">

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

</head>


<BODY>

<div id="headerwapper">

<div id="header">

<div id="sitename"><a href="index.html">Hu-Jatek.Net</a></div>

</div>

</div>

<div id="topmenuwrapper">

<div id="topmenu">

<ul>

<li><A HREF="Index.php?kezdolap">Kezdőlap</A></li>

<li><A HREF="index.php?jatek">Játék tesztek / Játékok</A></li>

<li><A HREF="index.php?tutorial">Tutoriálok</A></li>

<li><A HREF="index.php?termekek">Termékek</A></li>

<li><A HREF="index.php?tamogatas">Támogatás</A></li>

<li><A HREF="index.php?kapcsolat">Kapcsolatok</A></li>>

</ul>

</div>

<div id="clear"></div>

</div>

<div id="bodywrapper">

<div id="contentwrapper">

<div id="contentinner">

<div id="content">

<?php

if (isset($_GET["regisztracio"]))

include("inc/regisztracio.php");


if (isset($_GET["webadmin"]))

include("inc/webadmin.php");


if (isset($_GET["nincsbelepve"]))

include("inc/nincsbelepve.php");


if (isset($_GET["kezdolap"]))

include("oldalak/kezdolap.php");


if (isset($_GET["jatek"]))

include("oldalak/jatekok.php");


if (isset($_GET["tamogatas"]))

include("oldalak/tamogatas.php");


if (isset($_GET["tutorialok"]))

include("oldalak/tutorial.php");


if (isset($_GET["kapcsolat"]))

include("oldalak/kapcsolat.php");


if (isset($_GET["termekek"]))

include("oldalak/termekek.php");


if (isset($_GET["udvozles"]))

include("inc/belepve.php");


if (isset($SESSION["belepve"])) {

}


?>


<h1><?php echo htmlspecialchars($_SESSION["username"] , END_QUOTES) ?></h1>

Sikeressen beléptél


?>

</div>

<div id="right">

<h3>Oldalaim</h3>

<ul id="fomenu">

<li><A HREF="">Minecraft szerver</A></li>

<?php

if (isset($SESSION["belepve"])) {

}


?>

<li><A HREF="index.php?regisztracio">Regisztráció</A</li>

<li><A HREF="">link3</A></li>

<li><A HREF="">link4</A></li>

<li><A HREF="">link5</A></li>

</ul>


<h3>Belépés</h3>

<?php

include("inc/belepesurl.php");


?>

</div>

<div id="clear"></div>

</div>

</div>

</div>

<!-- Az alábbi kódot NE töröld! Creative Commons (CC) -->

<div id="footer">Design By <A HREF=#>Slimebal </A></div>

</BODY>

</HTML>



2012. nov. 18. 16:52
 1/9 anonim ***** válasza:

Hát...millió dologba bele lehetne kötni, de csak egy pár:

<li><A HREF="Index.php?kezdolap">Kezdőlap</A></li>

ilyen nincs, ezt így nem lehet, esetleg így:

<li><A HREF="Index.php?q=kezdolap">Kezdőlap</A></li>

ebből következik, hogy ez abszolút nem jó:

if (isset($_GET["kezdolap"]))

include("oldalak/kezdolap.php");

ezt így:

if ($_GET['q'] == "kezdolap") {

include("oldalak/kezdolap.php");

}

továbbá, ez mi? :

if (isset($SESSION["belepve"])) {

}


?>


<h1><?php echo htmlspecialchars($_SESSION["username"] , END_QUOTES) ?></h1>

Sikeressen beléptél


?>

levezetem mi a baj ezzel: megkérdezed a PHP-tól hogy létezik-e a $_SESSION['belepett'], és ha igen, nem történik semmi, hisz amint kinyitod a { rögtön le is zárod, vagyis ha létezik az említett session, nem történik semmi, ráadásul egy kósza PHP lezárás is van, d kinyitva nincs...

Még sok dolog lenne, de már csak egyet említek meg:

<div id="clear"></div>

ID helyett inkább Class-t kéne alkalmazni, mert az ID, egy egyéni azonosító, csak EGYSZER szerepelhet az oldalon, Class viszont annyiszor ahányszor akarod.

2012. nov. 18. 17:17
Hasznos számodra ez a válasz?
 2/9 anonim ***** válasza:
A biztonságról pedig nem is beszéltem, de most nem érek rá, hogy elmagyarázzam :)
2012. nov. 18. 17:19
Hasznos számodra ez a válasz?
 3/9 A kérdező kommentje:

Nyuglom még csak tanulom!

ám müködik csak a védett rész nem

"<?php echo htmlspecialchars($_SESSION["username"] , END_QUOTES) ?>" ezt irja hibának!

2012. nov. 18. 17:22
 4/9 Drone007 ***** válasza:

Az index.php?kezdolap és GET["kezdolap"] formulákkal nincs semmi gond, használhatod, de ügyelj a kis és nagybetűkre!

A kódban szerepelt valahol egy index.html is, ami nem biztos hogy létjogosult az index.php mellett.


A hibás sor után ("Sikeresen beléptél...") vedd ki a ?> lezárást!


Sajnos nem tudom, hogy létezik-e a $_SESSION["username"] változó, hiszen ez valószínűleg a connect.php-ban generálódna, de ha mégsincs, akkor az okozhat hibát.

2012. nov. 19. 08:52
Hasznos számodra ez a válasz?
 5/9 A kérdező kommentje:

Nem jó

átirányít meg működik de ezt ki írja!

ezt írja:


Notice: Undefined index: username in D:\New folder\xampp\htdocs\belepve.php on line 86


Notice: Use of undefined constant END_QUOTES - assumed 'END_QUOTES' in D:\New folder\xampp\htdocs\belepve.php on line 86


Warning: htmlspecialchars() expects parameter 2 to be long, string given in D:\New folder\xampp\htdocs\belepve.php on line 86

Sikeressen beléptél

2012. nov. 19. 16:05
 6/9 A kérdező kommentje:

A connect.php csak a mysql kapcsolódást működteti

belepesurl.php az ami ezt generálja

<?php

if (isset($_POST['login'])) {

If (empty($_POST['username'])) {

echo "Felhasználónév megadása kötelező! <br />";

}


If (empty($_POST['pass'])) {

echo "Jelszó megadása kötelező!";

} else {

echo "";

$username = $_POST['username'];

$sql = "SELECT * FROM info WHERE username='$username'";

$lekeres = mysql_query($sql) or die(mysql_error());

$numrows = mysql_num_rows($lekeres);

if ($numrows == 1) {

// echo "Létező felhasználó";

$user = mysql_fetch_assoc($lekeres);

// echo $user["password"];

// echo md5( $_POST['pass']);

if ($_POST['pass'] == $user["password"]) {

// echo "Helyes a jelszó";

$_SESSION["bejelentkezve"] = 1;

$_SESSION["username"] = $user["username"];

$_SESSION["email"] = $user["email"];

echo "Sikeres a belépés!";

header("location: belepve.php");

die();

} else {

echo "Nem jó a jelszó!";

}

} else {

echo "Nem létező felhasználó";

}

}

}


?>

<h3>

<form method="POST">

                Felhasználónév: <br />

                <input type="text" name="username"><br />

                Jelszó:<br />

                <input type="password" name="pass"><br /><br />

                  <input type="submit" name="login" value="Bejelentkezés" >

<br />

                  <a href="index.php?regisztracio">Regisztráció</A>


</form>

</h3>

2012. nov. 19. 16:07
 7/9 Drone007 ***** válasza:

$SESSION["belepve"] helyett $_SESSION["belepve"] !


Az is lehet gond, hogy a kódot php 5.2 értelmezővel (vagy az alatti) próbálod futtatni.

PHP 5.2-ben a $_SESSION változókat előzőleg deklarálni kell, nem elég értékadással létrehozni őket.

Javaslom a connect.php végénél deklaráld a $_SESSION változókat (a session már el van indítva):

if (!session_is_registered("belepve")) session_register("belepve");

$_SESSION["belepve"] = false;

if (!session_is_registered("username")) session_register("username");

$_SESSION["username"] = "";

Egyébként is célszerű alapértékekkel deklarálni a $_SESSION változókat.


A session változó vizsgálatához így nem elég az isset($_SESSION["belepve"]) (hiszen ez igaz minden esetben), helyette a tartalmát vizsgáld:

if ($_SESSION["belepve"]) {...}


Belépéskor a $_SESSION["belepve"] = true; kilépéskor vissza false-ra...


Sajnos a php értelmező verzióváltozásai miatt előfordulhatnak ilyen hibák.

2012. nov. 19. 21:15
Hasznos számodra ez a válasz?
 8/9 A kérdező kommentje:

<?php


session_start();

ob_start();

include("connect.php");


if (isset($_SESSION["bejelentkezve"]) == 1) {

$username = $_SESSION["username"];

echo "Szia $username";

echo "<a href='kijelentkezes.php'> Kijelentkezés </a>";

} else if (isset($_SESSION["bejelentkezve"]) == 0) {

echo "Nem vagy bejelentkezve kérlek jelentkezz be ezt megteheted ide kattintva <a href='index.php'>Bejelentkezes</a><br />";

echo "Ha nincs felhasználód akor kérlek regisztrálj ezt ide kattintva megteheted!<a href='index.php'>Regisztráció</a>";

}



?>


ez a kód jó? a bisztonság szempontjából?

és azt hogy lehet megcsinálni hogy ha be vagy jelentkezve és betöltöd az index.php-t akor egyből a bejelnetkezett oldalra menjen

2012. nov. 20. 18:27
 9/9 Drone007 ***** válasza:

Az, hogy a bejelentkeztetés után a megfelelő oldalra küldjön oldalszerkezettől függően más és más megoldást igényel, de alapvetően a lényeg ugyanaz. Először is, nem a bejelentkezetteket kell átirányítani, hanem azokat akik nincsenek loginolva. Pl.:


<?php


// inicializációs, konfigurációs részek, csatlakozás adatbázishoz...


if ($_SESSION["belepve"] != 1) {

header("Location: belepes.php");

}


// tovább a html fejlécre...

?>


A belépés phpban lehet aztán gomb a belépéshez, regisztrációhoz, jelszóvisszaállításhoz stb...

A bejelentkeztetésnél és a regisztrációnál kell ügyelni a biztonságra. Itt vannak jó példák az adatbázis támadások kivédésére:

[link]


Regisztrációnál érdemes captcha-t alkalmazni, de láttam már login előtt is. A captcha lehet vizuális grafikus dolog is, de lehet például egy egyszerű matemetikai kérdés is pl Mennyi 12 + 36, amire a válasz az ellenőrzőkód.

2012. nov. 21. 10:33
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!