Проблем със системата за анкети на HunteR

CosaNostra

Registered
Здравейте!

Имам 2 проблема със системата за анкети на @HunteR. Единият е във файла с функциите:

<?php
function view_results($id=0, $width, $podrejdane, $vote_poll=0, $to_vote=0, $time_vote=0, $time_votee=0)
{
if ($vote_poll)
{
if ($to_vote)
{
if ($time_votee)
{
if ($time_votee == 1)
{
mysql_query("INSERT INTO `ips` (`id_vapros`,`ip`,`timestamp`) VALUES ('$vote_poll','".$_SERVER['REMOTE_ADDR']."','0')");
}
else
{
$ip_co = mysql_num_rows(mysql_query("SELECT * FROM `ips` WHERE `ip` = '".$_SERVER['REMOTE_ADDR']."' AND `id_vapros` = '$vote_poll' LIMIT 1"));
if ($ip_co)
{
mysql_query("UPDATE `ips` SET `timestamp` = '".(time() + $time_vote)."' WHERE `ip` = '".$_SERVER['REMOTE_ADDR']."' AND `id_vapros` = '$vote_poll'");
}
else
{
mysql_query("INSERT INTO `ips` (`id_vapros`,`ip`,`timestamp`) VALUES ('$vote_poll','".$_SERVER['REMOTE_ADDR']."','".(time() + $time_vote)."')");
}
}
}
mysql_query("UPDATE `vaprosi`SET `br_otgovori` = br_otgovori + 1 WHERE `id` = '$vote_poll'");
mysql_query("UPDATE `otgovori` SET `broi` = broi + 1 WHERE `id` = '$to_vote' LIMIT 1");
}
$id = $vote_poll;
}

$vapros = mysql_fetch_array(mysql_query("SELECT * FROM `vaprosi` WHERE `id` = '$id' LIMIT 1"));
$order = ($podrejdane) ? "ORDER BY `broi` DESC" : "ORDER BY `id` ASC";
$query = mysql_query("SELECT * FROM `otgovori` WHERE `id_vapros` = '$id' $order");
$return = "<b>".$vapros['vapros']."</b><table border=\"0\">\n";
while ($otgovori = mysql_fetch_array($query))
{
$procent = @round(($otgovori['broi'] * (100/$vapros['br_otgovori'])));
$width_pic = @($otgovori['broi'] * ($width/$vapros['br_otgovori']));
$return .= "<tr><td>".$otgovori['otgovor']."<br /><img src=\"vote.bmp\" width=\"".$width_pic."\" height=\"9\" border=\"0\"></td><td>Гласове: ".$otgovori['broi']." (".$procent."%)</td></tr>\n";
}
$return .= "</table>\nОбщо гласове: ".$vapros['br_otgovori'];
return $return;
}

function view_form($id, $result_view)
{
$vapros = mysql_fetch_array(mysql_query("SELECT `vapros` FROM `vaprosi` WHERE `id` = '$id' LIMIT 1"));
$query = mysql_query("SELECT `id`,`otgovor` FROM `otgovori` WHERE `id_vapros` = '$id'");
$_SESSION['poll_id'] = $id;
$return = "<b>".$vapros['vapros']."</b>
<form action=\"\" method=\"post\">
<table border=\"0\">\n";
while ($otgovori = mysql_fetch_array($query))
{
$return .= "<tr><td><input type=\"radio\" name=\"vote\" value=\"".$otgovori['id']."\"> ".$otgovori['otgovor']."</td></tr>\n";
}
$return .= "</table>\n<input type=\"submit\" name=\"vote_poll\" value=\"Гласувай\">\n</form>";
$return .= ($result_view) ? "<a href=\"?poll_results=$id\">Виж резултатите</a>" : '';
return $return;
}

function poll($pol_id="last", $br_glas=0, $width=100, $podrejdane=0, $result_view=0)
{
if (isset($_GET['poll_results']) && is_numeric($_GET['poll_results']) && $_GET['poll_results'] > 0 && $result_view)
{
$p_ank = mysql_num_rows(mysql_query("SELECT * FROM `vaprosi` WHERE `id` = '".$_GET['poll_results']."' LIMIT 1"));
}
else
{
$p_ank = 0;
}

if ($p_ank > 0)
{
echo view_results(0, $width, $podrejdane, $_GET['poll_results'], 0);
}
else
{
$ip = $_SERVER['REMOTE_ADDR'];
$time = time();

$pol_id = ($pol_id == "rand" || $pol_id == "not_vote" || $pol_id == "last" || (is_numeric($pol_id) && $pol_id > 0)) ? $pol_id : "last";
$br_glas = ($br_glas === 0 || $br_glas === 1 || ereg('^[1-9]{1}[0-9]*[ ]{1}(sec|min|hour|day|week|month|year)$', $br_glas)) ? $br_glas : 0;
$width = (is_numeric($width) && $width > 0) ? $width : 100;
$podrejdane = ($podrejdane == 1 || $podrejdane == 0) ? $podrejdane : 0;
$result_view = ($result_view == 1 || $result_view == 0) ? $result_view : 0;

if ($br_glas !== 0 && $br_glas !== 1)
{
$raz = explode(" ", $br_glas);
$num = $raz[0]; $data = $raz[1];

if ($data == "sec") { $time_vote = $num; }
elseif ($data == "min") { $time_vote = $num * 60; }
elseif ($data == "hour") { $time_vote = $num * 3600; }
elseif ($data == "day") { $time_vote = $num * 86400; }
elseif ($data == "week") { $time_vote = $num * 604800; }
elseif ($data == "month") { $time_vote = $num * 2629743; }
elseif ($data == "year") { $time_vote = $num * 31556926; }
$time_votee = 2;
}
else
{
$time_votee = ($br_glas) ? 1 : 0;
}


if (isset($_POST['vote_poll']) && is_numeric($_POST['vote']) && $_POST['vote'] > 0 && isset($_SESSION['poll_id']))
{
$ot_c = mysql_num_rows(mysql_query("SELECT * FROM `otgovori` WHERE `id_vapros` = '".$_SESSION['poll_id']."' AND `id` = '".$_POST['vote']."' LIMIT 1"));

if ($time_votee)
{
if ($time_votee == 1)
{
$ip_c = mysql_num_rows(mysql_query("SELECT * FROM `ips` WHERE `ip` = '$ip' AND `id_vapros` = '".$_SESSION['poll_id']."' LIMIT 1"));
}
else
{
$ip_c = mysql_num_rows(mysql_query("SELECT * FROM `ips` WHERE `id_vapros` = '".$_SESSION['poll_id']."' AND `ip` = '$ip' AND `timestamp` > $time LIMIT 1"));
}
}
else
{
$ip_c = 0;
}
}


if ($ot_c && !$ip_c)
{
echo view_results(0, $width, $podrejdane, $_SESSION['poll_id'], $_POST['vote'], $time_vote, $time_votee);
}
else
{
if ($pol_id == "rand")
{
$query = mysql_query("SELECT `id` FROM `vaprosi` ORDER BY RAND() LIMIT 1");
$anketata = mysql_fetch_array($query);
$anketata['kolko'] = mysql_num_rows($query);
}
elseif ($pol_id == "last")
{
$query = mysql_query("SELECT `id` FROM `vaprosi` ORDER BY `id` DESC LIMIT 1");
$anketata = mysql_fetch_array($query);
$anketata['kolko'] = mysql_num_rows($query);
}
else
{
$anketata = mysql_fetch_array(mysql_query("SELECT `id`,COUNT(*) as 'kolko' FROM `vaprosi` WHERE `id` = '$pol_id' LIMIT 1"));
if ($anketata['kolko'] == 0)
{
$query = mysql_query("SELECT `id` FROM `vaprosi` ORDER BY `id` DESC LIMIT 1");
$anketata = mysql_fetch_array($query);
$anketata['kolko'] = mysql_num_rows($query);
}
}

if ($anketata['kolko'] > 0)
{
if ($time_votee)
{
if ($time_votee == 1)
{
$ip_co = mysql_num_rows(mysql_query("SELECT * FROM `ips` WHERE `ip` = '$ip' AND `id_vapros` = '".$anketata['id']."' LIMIT 1"));

}
else
{
$ip_co = mysql_num_rows(mysql_query("SELECT * FROM `ips` WHERE `ip` = '$ip' AND `timestamp` > $time AND `id_vapros` = '".$anketata['id']."' LIMIT 1"));
}

if (!$ip_co)
{
echo view_form($anketata['id'], $result_view);
}
else
{
echo view_results($anketata['id'], $width, $podrejdane, 0, 0, 0, 0);
}


}
else
{
echo view_form($anketata['id'], $result_view);
}
}
else
{
return "<b>Няма създадени анкети!</b>";
}
}
}
}
?>

Където извеждам анкетите ми се показват:

Deprecated: Function ereg() is deprecated in C:\XAMPP\htdocs\poll\functions.php on line 85

Notice: Undefined variable: ot_c in C:\XAMPP\htdocs\poll\functions.php on line 132

А вторият проблем е в админ-панела:

<?php
session_start();
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Система за анкети :: Админ панел ::</title>
</head>
<body>

<?php
require "config.php";

if (isset($_POST['submit']) && !isset($_SESSION['admin']) && !empty($_POST['admin']) && !empty($_POST['pass']))
{
if (ADMIN == $_POST['admin'] && PASS_ADMIN == $_POST['pass'])
{
$_SESSION['admin'] = 1;
}
else
{
echo "<b>Потребителското име или парола не са вярни!</b>";
}
}

if (isset($_SESSION['admin']) && $_GET['logout'])
{
unset($_SESSION['admin']);
}

if (isset($_SESSION['admin']))
{
// админ панел

if ($_GET['add'] == "new")
{
if (isset($_POST['submit']))
{
$otgovori = array_map("trim", $_POST['otgovori']);

$otgovor = array();
foreach($otgovori as $otg)
{
if (!empty($otg))
{
$otgovor[] = $otg;
}
}


if (!empty($_POST['vapros']) && count($otgovor) >= 2)
{
mysql_query("INSERT INTO `vaprosi` (`vapros`) VALUES ('".htmlspecialchars($_POST['vapros'])."')");
$last_id = mysql_insert_id();

foreach ($otgovor as $otg)
{
mysql_query("INSERT INTO `otgovori` (`id_vapros`,`otgovor`) VALUES ('$last_id','".htmlspecialchars($otg)."')");
}
echo "<b>Анкетата е създадена успешно!</b><br /><a href=\"".current(explode("?", end(explode("/", $_SERVER['REQUEST_URI']))))."\">Върни се</a>";
}
else
{
echo "Въпроса не е попълнен или имате по малко от 2 отговора за анкеата!";
}
}
else
{
?>
<form action="" method="post">
<table border="0">
<tr><td>Въпрос:</td><td><input type="text" name="vapros" size="40"></td></tr>
<?php
for ($i=1;$i<=15;$i++)
{
echo "<tr><td>Отговор $i</td><td><input type=\"text\" name=\"otgovori[]\" size=\"40\"></td></tr>\n";
}
?>
</table>
<input type="submit" name="submit" value="Прати">
</form>
<?php
}
}
elseif (isset($_GET['edit']) && is_numeric($_GET['edit']) && $_GET['edit'] > 0)
{
$query = mysql_query("SELECT `vapros`, COUNT(*) as 'kolko' FROM `vaprosi` WHERE `id` = '".$_GET['edit']."'");
$row = mysql_fetch_array($query);
if ($row['kolko'] > 0)
{
if (isset($_POST['submit']))
{
$otgovor = array_map("trim", $_POST['otgovor']);

$otgovori = array();
$dell_otg = array();
foreach ($otgovor as $key => $otg)
{
if (!empty($otg))
{
$otgovori[$key] = $otg;
}
else
{
$dell_otg[] = $key;
}
}

if (!empty($_POST['vapros']) && count($otgovori) >= 2)
{
if ($row['vapros'] != $_POST['vapros'])
{
mysql_query("UPDATE `vaprosi` SET `vapros` = '".htmlspecialchars($_POST['vapros'])."' WHERE `id` = '".$_GET['edit']."'");
}

foreach ($otgovori as $key => $otg)
{
mysql_query("UPDATE `otgovori` SET `otgovor` = '".htmlspecialchars($otg)."' WHERE `id` = '$key' LIMIT 1");
}

foreach ($dell_otg as $key)
{
mysql_query("DELETE FROM `otgovori` WHERE `id` = '$key'");
}

echo "Анкетата беше променена успешно!<br /><a href=\"".current(explode("?", end(explode("/", $_SERVER['REQUEST_URI']))))."\">Върни се</a>";
}
else
{
echo "Въпроса не е попълнен или имате по малко от 2 отговора за анкеата!";
}

}
else
{
?>
<form action="" method="post">
<table border="0">
<tr><td>Въпрос:</td><td><input type="text" name="vapros" size="40" value="<?=$row['vapros']?>"></td></tr>
<?php
$query = mysql_query("SELECT `id`,`otgovor` FROM `otgovori` WHERE `id_vapros` = '".$_GET['edit']."'");
$nomer = 1;
while($row = mysql_fetch_array($query))
{
echo "<tr><td>Отговор $nomer:</td><td><input type=\"text\" name=\"otgovor[".$row['id']."]\" size=\"40\" value=\"".$row['otgovor']."\"></td></tr>\n";
$nomer++;
}
?>
</table>
<input type="submit" name="submit" value="Редактирай">
</form>
<?php
}
}
else
{
echo "<b>Анкетата не съществува!</b>";
}
}
else
{

if (isset($_GET['del']) && is_numeric($_GET['del']) && $_GET['del'] > 0)
{
mysql_query("DELETE FROM `vaprosi` WHERE `id` = '".$_GET['del']."'");
mysql_query("DELETE FROM `otgovori` WHERE `id_vapros` = '".$_GET['del']."'");
}

echo "<a href=\"?add=new\">Нова анкета</a> | <a href=\"?logout=1\">Изход</a>";

$query = mysql_query("SELECT * FROM `vaprosi` ORDER BY `id` DESC");
echo "<table border=\"0\">\n";
while ($row = mysql_fetch_array($query))
{
echo "<tr><td>".$row['id'].".</td><td>".$row['vapros']."</td><td>[<a href=\"?edit=".$row['id']."\">Редактирай</a>] [<a href=\"?del=".$row['id']."\">Изтрий</a>]</td></tr>\n";
}
echo "</table>";
}

}
else
{
?>
<form action="<?php current(explode("?", end(explode("/", $_SERVER['REQUEST_URI']))))?>" method="post">
<table border="0">
<tr><td>Потребителско име:</td><td><input type="text" name="admin" size="25"></td></tr>
<tr><td>Парола:</td><td><input type="password" name="pass" size="25"></td></tr>
</table>
<input type="submit" name="submit" value="Влез">
</form>
<?php
}
?>

</body>
</html>

Щом въведа име и парола ми показва следното:

<br /><b>Strict Standards</b>: Only variables should be passed by reference in <b>C:\XAMPP\htdocs\poll\admin.php</b> on line <b>184</b><br />

И го показва не къде, а в URL бара.
Къде бъркам ( надали аз бъркам защото не съм променял нищо по кода ) и как да отстраня грешките?

Благодаря предварително!
 
Сложи в началото на кода:

PHP:
error_reporting(0);

Може да си работи и с тия грешки.Зависи от настройките на сървъра или от това дали си слагал error_reporting, set_error_handler..
 
Грешките ги скри, но нямам достъп до самия admin.php и не мога да добавям анкети!
 
А може да бъде и от xampp-a преди и аз имах много проблеми и минах на VertrigoServ
 
Да бе, хора, като ви се износят гумите (т.е. са за смяна функциите, които ползвате) сменяте колата, а?

Deprecated: Function ereg() is deprecated in C:\XAMPP\htdocs\poll\functions.php on line 85

Notice: Undefined variable: ot_c in C:\XAMPP\htdocs\poll\functions.php on line 132

Първата грешка се оправя като замениш ereg() с preg_match(). След една от версиите на PHP не е препоръчително да се използва ereg() и eregi().

Втората грешка значи, че не си дефинирал никъде тази променлива. Направи тaка на ред 132:
Код:
if (isset($ot_c) && !$ip_c)

Третата грешка е просто, че се нарушават стандартите. Направи го така:
Код:
<form action="<?php $exploded = explode("/", $_SERVER['REQUEST_URI']); current(explode("?", end($exploded)))?>" method="post">

Би трябвало да тръгне, ама може и грешка да даде :D
 
Сегашните грешките се изчистиха - всичко работи, но се появиха 2(3) нови.

Първата:
Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in C:\XAMPP\htdocs\poll\functions.php on line 85

И в админ-панела
Notice: Undefined index: logout in C:\XAMPP\htdocs\poll\admin.php on line 26

Notice: Undefined index: add in C:\XAMPP\htdocs\poll\admin.php on line 35
 
CosaNostra каза:
Сегашните грешките се изчистиха - всичко работи, но се появиха 2(3) нови.

Първата:
Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in C:\XAMPP\htdocs\poll\functions.php on line 85

И в админ-панела
Notice: Undefined index: logout in C:\XAMPP\htdocs\poll\admin.php on line 26

Notice: Undefined index: add in C:\XAMPP\htdocs\poll\admin.php on line 35
Виж най добре си смени домашния сървър с този който ти предложих ( http://vertrigo.sourceforge.net/?lang=bg )
 
Styl3rbg каза:
CosaNostra каза:
Сегашните грешките се изчистиха - всичко работи, но се появиха 2(3) нови.

Първата:
Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in C:\XAMPP\htdocs\poll\functions.php on line 85

И в админ-панела
Notice: Undefined index: logout in C:\XAMPP\htdocs\poll\admin.php on line 26

Notice: Undefined index: add in C:\XAMPP\htdocs\poll\admin.php on line 35
Виж най добре си смени домашния сървър с този който ти предложих ( http://vertrigo.sourceforge.net/?lang=bg )

Не искам да си сменям сървъра!
 

Back
Горе