Грешка проблем

kenwood10

Registered
Отново съм аз :D

PHP:
Notice: Undefined index: username in C:\Program Files\xampp\htdocs\includes\settings.php on line 24

ред 24

PHP:
mysql_select_db("$db", $db_conn) or die("unable to select the database");

ето го и кода

PHP:
<?
@session_start();
@ob_start();
?>

<?php

$title = "TopRacers - Топ състезателите на България!";

$host = "localhost";

$dbuser = "root";

$dbpass = "";

$db = "topracers";



$db_conn = mysql_connect("$host", "$dbuser", "$dbpass")

or die("unable to connect to the database");

mysql_select_db("$db", $db_conn) or die("unable to select the database");

mysql_query("SET CHARACTER SET utf-8");


$user = $_SESSION['username'];

$selectuser = mysql_query("SELECT * FROM users WHERE username='$user'");

if(mysql_num_rows($selectuser)>0)

{

$urow = mysql_fetch_array($selectuser);

$timenow = time();

$update = mysql_query("UPDATE users SET timeonline='$timenow' WHERE username='$user'");

}

else

{

session_unset();

}

Един ден ще свършат грешките :D
 
PHP:
<?php
@session_start();
@ob_start();

$title = "TopRacers - Топ състезателите на България!";

mysql_connect('localhost', 'root', '')

or die("unable to connect to the database");

mysql_select_db('topracers') or die("unable to select the database");

mysql_query("SET CHARACTER SET utf-8");


$user = $_SESSION['username'];

$selectuser = mysql_query("SELECT * FROM users WHERE username='$user'");

if(mysql_num_rows($selectuser)>0)

{

$urow = mysql_fetch_array($selectuser);

$timenow = time();

$update = mysql_query("UPDATE users SET timeonline='$timenow' WHERE username='$user'");

}

else

{

session_unset();

}
 
хмм проблема ти е тук:

PHP:
$user = $_SESSION['username'];

Тази сесия не е открива, за това вади тази грешка.

Може отново да ползваш isset();
 
Никъде не е зададена, затова няма как да я открие.

Лоша практика:

1.
PHP:
@session_start();
@ob_start();

гледай да отбягваш да потискаш грешките, особено в този случай. Това в никакъв случай не ти помага.

2. Грешно
PHP:
mysql_query("SET CHARACTER SET utf-8");

в SQL няма utf-8, там е utf8. Т.е. трябва да стане:

PHP:
mysql_query("SET CHARACTER SET utf8");

3.
PHP:
$selectuser = mysql_query("SELECT * FROM users WHERE username='$user'");

аз не бих използвал още една променлива, за да съхраня сесията, това е излишна памет(макар и да не се усеща).
А и по-практично и нагледно по-добре би било така:

PHP:
$selectuser = mysql_query("SELECT * FROM users WHERE username='{$user}'");

# или ако ползваш чиста сесийна променлива

$selectuser = mysql_query("SELECT * FROM users WHERE username='{$_SESSION['username']}'");

4.
PHP:
$urow = mysql_fetch_array($selectuser);

ако няма да ползваш числовите индекси на масива, който ти връща това, то най-добре използвай mysql_fetch_assoc(). Няма смисъл да пълниш паметта двойно.

5.
PHP:
session_unset();

аз лично бих използвал unset($_SESSION['username']);, макар че и така не е лошо, но пък ако ще се ползват сесийните функции, то аз предпочитам session_destroy()


Надявам се да съм бил полезен. :)
 

Горе