PHP-Script.hu
Kiemelt hirdetés:
2026. október 17. 03:21 szombat, ma Hedvig névnap van


grafika


Videóbázis


Listázás:  Idő szerint:
Webprogramozás arr PHP info Fehér lap...
(#5) Jedimaster 2013.07.10. 13:22

Jedimaster
Jedimaster
Kezdő

Sziasztok!

A problémám a következő: Csináltam egy projektmenedzselő, munkaidő nyilvántartó programot egy weboldalra. A probléma a bejelentkezési résznél van: felhasználói nevet és jelszót kér (POST metódussal továbbítja a feldolgozó fájlnak). Ha helyes adatokat adunk meg, rendben be is léptet, bent minden hibátlanul működik, de ha nem írunk be semmit (bármelyik mezőbe...) vagy elgépeljük a belépési adatokat, meg akarja nyitni (jeleníteni) a feldolgozó fájl tartalmát, mikor ez a fájl csak annyit tartalmaz, hogy fogadja a belépési adatokat, megvizsgálja, h a felhasználók adatait tartalmazó táblából tud-e visszaadni ID -t, ami ehhez a felh. névhez és jelszóhoz tartozik. Ha igen, akkor egy másik táblából kikeresi a teljes nevet, amit GET metódussal továbbít a "protected.php" oldalra és átirányít (header() -függvény...), ha valahol bukik a mutatvány, tehát valamelyik MySQL lekérdezés üres sort ad vissza, visszairányít a bejelentkezési oldalra, ami fogadja a GET metódussal küldött "hiba" változó értékét (ha 1 -> hibaüzenetet ír ki...).

Hozzá tartozik még ehhez a problémához, hogy régebben (1-2 hónapja) még tökéletesen működött, azóta csupán annyit változtattam rajta, hogy mindenhonnan kivettem az adatbázis eléréséhez deklarált változókat és azokat egy külön fájlba raktam, amit include_once() segítségével hívok meg (24 fájlnál elég fárasztó mindig átirkálni a változók értékeit a localhost-os értékről "éles" szerveren tárolt értékekre...).

A fájl tartalma (empl_feld.php):
_______________________________________________________________________________________________

<?php

header('Content-Type: text/html; charset=utf-8');
session_start();

include_once("connect.php");

$username = $_POST['username'];
$password = $_POST['password'];

$sqlUser = mysql_query ("SELECT user_id FROM user WHERE username='$username' AND password='$password'");

if (!$sqlUser)
{
header("location:employees.php?hiba=1");
}
else
{
while ($sqlUserID = mysql_fetch_assoc($sqlUser))
{
foreach ($sqlUserID as $userID)
{
$_SESSION['userID'] = $userID;
$sqlUName = mysql_query ("SELECT full_name FROM user_detail WHERE user_id='$userID'");

while ($resUser = mysql_fetch_assoc($sqlUName))
{
if (!$resUser)
{
print "A felhasználói név nincs regisztrálva!";
}
else
{
foreach ($resUser as $full_name)
{
header("location:protected.php?nev=$full_name");
}
}
}
}
}
}

?>

/*
* Természetesen, a "protected.php" -ra szeretnénk belépni; azzal nincs is semmi gond, ha azonban hibás adatokat adunk
* meg, akkor nem irányít vissza a belépési oldalra, hanem egy üres, fehér lapot jelenít meg, a címsorban pedig
* ".../empl_feld.php" szerepel. Több időt töltöttem már azzal, hogy ezt az egyetlen hibát orvosoljam, mint az egész
* program megírásával...
*/

(#4) szaby 2013.06.02. 22:34

szaby
szaby
Kezdő

Szóval tovább haladtam most már működnek rendesen
Viszont most elakadtam.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// Bejövő levelek olvasása
if ($action == "read_inbox")
{
  $id = (int)$_GET["id"];
  if (!int_check($id)) {
      exit("Érvénytelen ID.");
  }
 
  $res = mysql_query("SELECT l.id, l.added, l.msg, l.sender, l.unread, l.location, u.username FROM letters l
                      LEFT JOIN users u ON u.id = l.sender 
                                        WHERE l.receiver = ".sqlesc($CURUSER["id"])." AND l.location = 'in' ORDER BY l.added DESC") or die("barf!");
  $arr = mysql_fetch_assoc($res);
  
  if ($arr["unread"] == "yes") {
      mysql_query("UPDATE letters SET unread = 'no' WHERE id=".(int)$arr["id"]) OR die("Hiba történt az adatbázis módosítása során!");
    }
 
  
  stdhead("Bejövő");
  echo ("<table width='700' align='center' cellspacing='0' cellpadding='0'><tr><td>");
  echo ("<div class='letters'>".$arr["msg"]."<br />Dátum: ".date("H:i", $arr["added"])."</div>");
  echo ("<a href='$BASEURL/messages.php?action=send_form&amp;id=".(int)$arr["sender"]."'>Válasz</a><br />
         <a href='$BASEURL/messages.php?action=delete&amp;id=".(int)$arr["id"]."&amp;type=in'>Törlés</a>
         <br /><a href='$BASEURL/messages.php?action=view_inbox'>Bejövő</a>");
  echo ("</td></tr></table><hr class='hr' />");
  stdfoot();
}
 



Ez a kód megjeleníti hogy kitől és mikor kaptam levelet. Fel is sorolja szépen egymás alá hogy kitől. Viszont akármelyiket nyitom meg mindig a legújabb üzenet tartalmát hozza be holott az ID változik a címsorban.

Remélem érthetően fogalmaztam.

(#3) szaby válasza erre: (#2) Kolyok 2013.05.29. 12:24

szaby
szaby
Kezdő

Ezt mind értem ki is próbáltam amit írtál és működik is. Viszont ez már működött ez a kód átalakítás nélkül is. S most meg furcsálom hogy oda kell biggyeszteni ezt a kiegészítést.

(#2) Kolyok válasza erre: (#1) szaby 2013.05.28. 13:42

Kolyok
Kolyok
Kezdő

Hali!

Az $action változónál $_GET metódust míg a form-ban $_POST metódust használsz.
Így az $action = htmlsafechars($_GET["action"]); nem látja a "take_send"-et.

Biztosan van szebb/jobb megoldás is de ezt is megpróbálhatod:

Cseréld ezt:

1
if ($action == "take_send")


Erre:

1
if (isset($_POST['action']) && $_POST['action'] == 'take_send')

(#1) szaby 2013.05.28. 12:44

szaby
szaby
Kezdő

Sziasztok!

Csináltam egy üzenetküldő scriptet egy chat oldalon de valamiért nem működik. A felhasználó adatlapján van egy Üzenet nevű hivatkozás ami így néz ki:

1
<a href='$BASEURL/messages.php?action=send_form&amp;id=$id'>Üzenet</a>


Ezután megjelenik az üzenetküldési űrlap. Viszont amikor beírom az üzenetet és el akarom küldeni csak fehér lapot dob.
Próbáltam már az SQL-es részt is var_dump-al kiíratni de akkor is fehér lapot kapok.

Itt a kód:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
$action = htmlsafechars($_GET["action"]);
 
if ($action == "send_form")
{
  $id = (int)$_GET["id"];
  if (!int_check($id)) {
      exit("Érvénytelen ID.");
  }
 
    $res = mysql_query("SELECT u.id, u.username FROM users u WHERE u.id = ".sqlesc($id));
  $user = mysql_fetch_assoc($res);
  
  stdhead("Üzenet küldés");
  
  echo ("Címzett: ".$user["username"]."");
  echo ("<form action='messages.php' method='post'>
        <input type='hidden' name='action' value='take_send' />
        <input type='hidden' name='sender' value='".(int)$CURUSER["id"]."' />
        <input type='hidden' name='receiver' value='$id' />");
        if (isset($_GET["returnto"]) || isset($_SERVER["HTTP_REFERER"])) { ?>
            <input type="hidden" name="returnto" value="<?=(isset($_GET["returnto"]) ? $_GET["returnto"] : $_SERVER["HTTP_REFERER"])?>" />
          <? } 
        echo ("Szöveg:<br /><input type='text' name='message' maxlength='255' /><br />
        <input type='checkbox' name='save' value='yes' />Üzenet mentése<br />
        <input type='submit' value='OK' />");
 
  echo("<hr class='hr'>");
  echo("<a href='$BASEURL/rooms.php'>Szobák</a>&nbsp;|&nbsp;<a href='$BASEURL/menu.php'>Menü</a>");
  stdfoot();
}
 
if ($action == "take_send")
{
  
  $sender = (int)$_POST["sender"];
  $receiver = (int)$_POST["receiver"];
  $added = time();
  $message = htmlsafechars($_POST["message"]);
  
  $save = htmlsafechars($_POST["save"]);
  $location = ($save == 'yes') ? "both" : "in";
 
  $returnto = isset($_POST["returnto"]) ? $_POST["returnto"] : '';
  
  if (!int_check($sender) || !int_check($receiver)) {
      exit("Érvénytelen ID.");
  }
 
  if (empty($message)) {
      exit("Nem írt üzenetet!");
  }
  
  if (strlen($message) > 255) {
      exit("Az üzenet túl hosszú.");
  }
 
  if (!valid_message($message)) {
    exit ("Érvénytelen üzenet.");
  }
 
  mysql_query("INSERT INTO letters (sender, receiver, added, msg, location)
               VALUES(".sqlesc($sender).", ".sqlesc($receiver).", ".sqlesc($added).", ".sqlesc($message).", ".sqlesc($location).")");
  
  if ($returnto) {
    header ("Refresh: 2; url=$returnto");
    exit("Az üzenet sikeresen elküldve!");
  }
}
 


Sőt próbáltam azokat az adatokat is kiíratni amit $_POST-al adok át és semmi, ugyanúgy fehér lap.

Köszönöm szépen aki segít!

Listázás:  Idő szerint:


© 2006-2026 PHP-Script.hu, Minden jog fenntartva!
Design: Rácz Gergely, Oldalmotor: Rácz Gergely
Impresszum - Oldaltörténet - Oldalszabályzat