Kezdőoldal » Számítástechnika » Programozás » Mi lehet a probléma és annak...

Mi lehet a probléma és annak a megoldása?

Figyelt kérdés

Sziasztok! Egy programot írok php-ben és egy elég abszurd de annál nagyobb problémába ütköztem. Először is felvázolnám a gondolatmenetemet. Egy olyan oldalt szeretnék megvalósítani ahol: Az (index) oldalon van egy input amin beírok egy kódot. Ez felmegy php-ben és ellenőrzi annak helyeségét. Ha a kód stimmel akkor átírányatana egy másik oldalra. Na ezt nem is lenne olyan nehéz a probléma itt azzal van, hogy ezt munkamenetfüggvénnyel szeretném megvalosítani. Az (index) oldalon létrehozok egy "a" nevű session-t. A másik oldalon azt szeretném ellenőrizni, hogy ez az "a" nevű sessionek az értéke 1 vagy 0. Ha 0 akkor valószinüleg a link ismerete miatt lépett be és nem írta be a kódot -> ilyenkor die(); de ha 1 akkor beírta a helyes kódot mert az (index) oldalon 1-re állítom az értéket ha jó. A probléma: Ha a már leírtakat kivitelezni probálom nem lehet mert a session-t csak akkor ismeri fel ha én nyítom meg a linket. Ha php-ből írányítok át egy curl_init-el nem jelz, hogy ismerni a session-t. Probáltammár sima href-el, js-el de sehogy nem jött össze. Headerel meg nem lehet ügye mert a session_start-nál már elküldi azt. A kód:



1.Oldal


<?php

session_start();

$_SESSION["a"] = "0";

?>

<html>

<head>

<meta charset="UTF-8">

<title>Try 1.Oldal</title>

</head>

<body>

<?php

if (isset($_POST["submit"])) {

$code = $_POST["password"];

if ($code == "asd123") {

$_SESSION["a"] = "1";

$ch = curl_init(" [link]

curl_exec($ch);

die;

}else {

$_SESSION["a"] = "0";

echo "Hibás kód!";

}}

?>

<form method="post">

<input type="password" name="password" placeholder="Kód"></input>

<input type="submit" name="submit" value="Belépés"></input>

</form>

</body>

</html>


2. Oldal


<?php

session_start();

?>

<html>

<head>

<meta charset="UTF-8">

<title>Try 2.Oldal</title>

</head>

<body>

Tiskod szöveg: Obama az nagy arc. <?php echo $_SESSION["a"]; ?> <!-- Ha kiakarom íratni csak akkor ír értéket ha saját kezüleg nyítom az oldalt, egyéb esetben nem. --->

</body>

</html>


Az oldal struktúrája: Mint a 2 page a gyökérben van. Előre is köszönöm a segítségeket és a megoldásokat. :)



2016. okt. 31. 14:14
 1/2 Drone007 ***** válasza:

1. a curl nem irányít át másik oldalra, csak az adott oldal adatát kéri le.

2. a session_start nem küldi el a headert, az küldi el a headert, hogy írsz a kimenetre (<html>...)


A megoldás: az 1. oldal eredménycsekk részét tedd át a session létrehozás után, a <html> elé, és hagyd a Curl-t, az nem erre való. A header location menni fog. Csak a szöveges üzeneteket kell a bodyban elhelyezni, a validálás mindig a header meghívása előtt menjen le.

Emellett célszerű a változóknak beszédes nevet adni, és a feltételeket összevonni, ha lehetséges.


<?php

session_start();

if (!isset($_SESSION["access"])) {

$_SESSION["access"] = false;

}

$message = "";

if (isset($_POST["submit"]) && isset($_POST["password"]) && $_POST["password"] == "asd123") {

$_SESSION["access"] = true;

} else {

$message = "Hibás kód!";

}

if ($_SESSION["access"]) {

header('location: 2oldal.php');

}

?>

<html>

<head>

<meta charset="UTF-8">

<title>Try 1.Oldal</title>

</head>

<body>

<?php echo $message; ?>

...


2. oldal:

<?php

session_start();

if (!isset($_SESSION["access"]) || !$_SESSION["access"] ) {

header('location: 1oldal.php');

}

?>

<html>

...


Amint látod célszerű a második oldalban is ellenőrizni, hogy létezik-e és helyes-e a session, különben direkt címzéssel a jelszó ellenére elérik.

2016. nov. 1. 09:27
Hasznos számodra ez a válasz?
 2/2 A kérdező kommentje:
Tökéletese működik! Nagyon szépen köszönöm a segítséget. :)
2016. nov. 1. 11:40

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!