» »

Rabim pomoč pri PHP-ju.

Rabim pomoč pri PHP-ju.

SPTŠLowLife ::

Pozdravljeni, ena izmed nalog pri določeni vaji pri razvoju spletnih aplikacij mi dela probleme, zato sem se obrnil na vas.

Posodobiti oz. "updejtati" moramo datum zadnje prijave za določenega uporabnika, ko se le ta prijavi v naš sistem. Zaenkrat sem si nalogo zamislil tako, a ta način ne deluje:

http://prntscr.com/ej0ecw

Kje sem naredil napako in kakšna je pravilna rešitev? Hvala.

SPTŠLowLife ::

Funkcijo sem popravil na to, vendar še vedno ne deluje:

http://prntscr.com/ej12bk

doctor78 ::

Kakšen error stack bi nam pomagal.

Zgodovina sprememb…

  • spremenilo: doctor78 ()

Yacked2 ::

Okoli date ti manjkajo dvojni narekovaji.
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!

Stari89 ::

Pomagalo bi, če bi napisal, kater error ti vrže ven.

Gledam drug printscreen, tam kjer si narisal rdeč okvir. Odstranil bi spremeljivko $date in bi napisal kar takole:
$sql_zadnjaPrijava = "INSERT INOT user (zadnjaPrijava) VALUES(NOW())";

SQL stavek si shranil v spremenljivko, ampak ga nisi izvedel:
if (!mysqli_query($link, $sql_zadnjaPrijava)) {
   // izpišeš error
   // ...
} else {
   // ustvarimo sejo
   // ...
}

Če želiš fasat 5+, se znebi nepotrebnega gnezdenja if stavkov in raje dodaj kak "return;" več. To je zelo dobra praksa programiranja. Priporočam da se je navadiš, celo pri takih nalogah. Pa uporabljaj angleščino (tega se še posebej profesorji nočejo držat!). Recimo:
function Prijava()
{
   if (!isset($_POST['gumb']) || !isset($_POST['username']) || !isset($_POST['password1']))
   {
      echo "Missing POST parameters";
      return;
   }
   if (empty($_POST['username']) || empty($_POST['password1']))        // enako, ampak lepše kot tole: $_POST['username'] == ""
   {
      echo "No data in text fields!";
      return;
   }
   echo nl2br("\n");
   $username = strip_tags($_POST['username']);
   $password1= strip_tags($_POST['password1']);

   $link = open_database_connection();
   $hashed_password = sha1($password1);
   $sql = "SELECT id FROM user WHERE username = '$username' AND password = '$hashed_password'";

   $result = mysqli_query($link, $sql);
   if (!$result)
   {
      echo "SQL error: " . mysql_error($link);
      return;
   }
   if (mysqli_num_rows($result) == 0)
   {
      echo "Incorrect login credentials";
      return;
   }
   $sql_last_login = "INSERT INTO user (zadnjaPrijava) VALUES (NOW())";
   if (!mysqli_query($link, $sql_last_login ))
   {
      echo "SQL error: " . mysql_error($link);
      return;
   }
   // ustvarimo sejo
   /// in tako naprej
}

Pazi: sem bolj površne sorte in tega nisem mel kje stestirat.
Še zadnji nasvet: Ne štukaj SQL stavkov s spremenljivkami! Uporabljaj parametre! To kar kliče po SQL injection napadu! Kaj, če ti nekdo v username polje napiše " '; DROP TABLE users;" ? :) Preberi si tole: link

Stari89 ::

Ah ja, INSERT ne bo pravi. Sem mislil, da loggaš prijave v samosvojo tabelo, ne kar direkt na userja. Bo treba nardit UPDATE, tako kot na taprvem primeru. Od oka:
$sql_zadnjaPrijava = "UPDATE user SET zadnjaPrijava = NOW() WHERE username = '$username' AND password = '$kodirano_geslo'";

LP


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

PHP datoteka, povezava na bazo

Oddelek: Izdelava spletišč
121194 (911) racunalnicar
»

PHP - header : javi napako

Oddelek: Izdelava spletišč
61188 (1143) Camel
»

mySQL prikaz apostrof

Oddelek: Izdelava spletišč
91036 (923) -=aVa=-
»

[PHP] Kako izvesti neko kodo šele ob kliku

Oddelek: Izdelava spletišč
241794 (1280) krho
»

Raziskava o ranljivosti spletnih strani z SQL bazami podatkov

Oddelek: Novice / Varnost
204784 (4120) sverde21

Več podobnih tem