ugrás a tartalomhoz

Session használata hiba kiíráshoz

Anonymous · 2006. Jan. 11. (Sze), 13.02
Hellosztok.

A következő lenne a kérdésem:

van egy űrlap, amelyet egy php fájllal dolgozok fel. Feldolgozás alatt értem azt, hogy megnézem minden mezőt helyesen kitöltött-e, ha nem akkor egy $_SESSION['hiba'] változóba elmentem a hiba okát, majd header('location....')-nel visszaküldöm az űrlap oldalra és megnézem mi volt a hiba oka, majd egy eddig láthatatlan divet láthatóvá teszek és kiírom benne a hiba okát.

A probléma a sessionnel van, nevezetesen, hogy a sessionid-t cookieban tárolnám, viszont ha le van tiltva a cookiek használata, akkor ugye az egész hiba kiírós móka ugrott. A megoldás az lenne, hogy beleteszem a linkbe, azonban ezt nem akarom, mert ronda lesz a szép linkem. :) Űrlapba meg nem tudom tenni. Na de akkor hogyan továbbítsam a sessionid-t??
 
1

Ugyanabban a scriptben?

janoszen · 2006. Jan. 11. (Sze), 13.26
Mi lenne, ha ugyanaz a script ellenőrizné az adatokat, mint amelyik a formot gyártja? Így nincs gond...
2

Ezzel kezdtem

Anonymous · 2006. Jan. 11. (Sze), 13.36
Igen, de ezzel az a gond, hogy ha küldés után rányomok a frissítésre, akkor rákérdez a böngésző, hogy el akarom-e küldeni az adatokat még egyszer. Ha ezt ki tudnám iktatni, akkor ez lehetne a tökéletes megoldás.
3

header: location

Dualon · 2006. Jan. 11. (Sze), 14.59
Irányítsd át: header("Location:cim").

D.
http://e-arc.hu/
4

<Nincs cím>

Anonymous · 2006. Jan. 11. (Sze), 15.11
Ok, de akkor hogyan jelenítem meg a hibaüzenetet, ha rögtön átirányítom?
Meg lehetne úgy is oldani, hogy feldolgozó oldalon írom ki a hibákat és mittomén lenne egy vissza link, de az elég gány megoldás.
Arra gondoltam, ha nem engedélyezi a cookiekat, akkor beleteszek a linkbe egy "hibakódot" pl. így : valami.hu/uzenet/1 és erre irányítom át a feldolgozás után az űrlap oldalra, ahol figyelem, hogy kapok-e hibakódot.
Vagy nem tudom...
5

IFRAME

csla · 2006. Jan. 11. (Sze), 20.15
Tudom, hogy IFRAME nem divatos, de én akkor is azt szoktam csinálni, hogy az űrlapjaim alatt (igaz, nálam ezek nem klasszikus weblapok, inkább webalkalmazások) van egy IFRAME, amiben történik az elküldött adatok ellenőrzése. Ha az adatok rendben vannak, akkor az IFRAME-ben futó script "tünteti el" az űrlapot (azaz irányítja tovább a "szűlő" tartalmat), ha hiba van, akkor az IFRAME-ben írja ki a hiba okát. Így az űrlap a már beírt adatokkal mindaddig ott marad (újratöltés nélkül), míg a beírt adatok végleg elfogadásra nem kerülnek.
8

Frissítés

attlad · 2006. Jan. 11. (Sze), 22.29
Meg lehetne úgy is oldani, hogy feldolgozó oldalon írom ki a hibákat és mittomén lenne egy vissza link, de az elég gány megoldás.

Nem csak a hibát kell kiírni, hanem az egész űrlapot az elküldött adatokkal kitöltve és megjelölni a hibás mezőket és kiírni mi a hiba. Ezután milyen megfontolásból kattintana az user a frissítés gombra ahelyett hogy kitöltené a hiányzó mezőket?
9

<Nincs cím>

Anonymous · 2006. Jan. 12. (Cs), 08.52
'reggelt!

Lehet, hogy én vagyok csökkent képességű, de ha a feldolgozo oldalon megjelenítem újra az űrlapot a hibákkal együtt, akkor azt hogyan fogja elküldeni utána (mi kerül az action-be?)?

Ezután milyen megfontolásból kattintana az user a frissítés gombra ahelyett hogy kitöltené a hiányzó mezőket?


Vannak idióta emberek, na meg olyanok akik kevésbé jártasak az internet világában.

-Egyébként nekem úgy tűnik, hogy nincs tökéletes megoldás.-
10

??

attlad · 2006. Jan. 12. (Cs), 16.47
Az actionbe mindig ugyanaz kerül.

Itt egy csúnya, hibás példa, de a lényeg talán látszik:

<?php

error_reporting(0);

if ($_POST['email'] && $_POST['content']) {
  echo 'ok'; // + átirányítás
} else if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  echo '<p>Mindkét mező kitöltése kötelező...</p>';
}

?>
<form action="/uzenet" method="POST">
<input name="email" value="<?=$_POST['email']?>">
<textarea name="content"><?=$_POST['content']?></textarea>
<input type="submit">
</form>
11

Hopsz...

Anonymous · 2006. Jan. 12. (Cs), 17.54
Rosszul értelmeztem amit először írtál. Én valami egész másra gondoltam, ezért kérdeztem az action-t.
Mint írtam, ezzel az a bajom, hogy ha rányomom egy frissítést, akkor rákérdez a böngésző, hogy elküldje-e mégegyszer. Tudom, hogy hülyeség, de nekem nem tetszik úgy.
6

válasz

breakline · 2006. Jan. 11. (Sze), 22.00
Hi!

én ezt úgy oldanám meg, hogy az ellenörző oldalon (ahova majd visszajutsz, ha elcseszel vmit) csinálnék mondjuk ilyesmit (csak példakent):

<?php
$hiba['nev']="Rossz név";
$hiba['jelszo']="Rossz jelszó";
majd mondjuk a feldolgozó php lap egy header-el visszaküldi a felhasználót az űrlaphoz, + az url-be beteszed a hiba tömb megfelelő elemének az azonosítóját (remélem érthetően írom:), amit át tudsz venni a $HTTP_GET_VARS tömmből, és ki tudod írni a hibát. De mondjuk azt nem értem, miért kell ide session-t alkalmazni, hiszen vannak ehhez hasonló egyszerű megoldások, pl. amit felettem is írtak, hogy az ellenőrzés ua.-on a lapon van.

üdv
BL
7

Érthető, de....

Anonymous · 2006. Jan. 11. (Sze), 22.19
Hali!

Kb. én is ezt írtam le:

Arra gondoltam, ha nem engedélyezi a cookiekat, akkor beleteszek a linkbe egy "hibakódot" pl. így : valami.hu/uzenet/1 és erre irányítom át a feldolgozás után az űrlap oldalra, ahol figyelem, hogy kapok-e hibakódot.


De mondjuk azt nem értem, miért kell ide session-t alkalmazni, hiszen vannak ehhez hasonló egyszerű megoldások, pl. amit felettem is írtak, hogy az ellenőrzés ua.-on a lapon van.


Ezt is írtam, hogy miért nem tökéletes:

Igen, de ezzel az a gond, hogy ha küldés után rányomok a frissítésre, akkor rákérdez a böngésző, hogy el akarom-e küldeni az adatokat még egyszer. Ha ezt ki tudnám iktatni, akkor ez lehetne a tökéletes megoldás.