Автор Тема: Система за гласуване  (Прочетена 14669 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

wuser

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 85
  • -Получени: 49
  • Публикации: 2761
Re: Система за гласуване
« Отговор #15 -: 04 Септември 2011, 19:15:20 »
Значи почти познах  ;D Аваланч няма опасност да не се класира. По-подробен от теб в обясненията не съм виждал  :P
Мъдростта на патилото
Perl Monks: PHP - it's "training wheels without the bike" -- Randal L. Schwartz


Дееба... чувствам се все едно обяснявам на майка ми как да си отвори пощата
"не работи"
WTF?!?!? к'во значи че не работи?
Не ти се компилира, дава ти грешка, вади ти грешни резултати, компютърът ти се изключва като го напишеш или на целия квартал му спира тока?
Stilgar

infinity1305

  • Jr. Member
  • **
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 55
Re: Система за гласуване
« Отговор #16 -: 22 Октомври 2011, 20:57:28 »
Ето ме пак и здравейте. Всичко работи на 6 и схванах идеята на учителя, даже се заиграх с кода. Веднага казвам, че наученото до тук е само капчица от океана PHP, но това ме изпълва с оптизмизъм да вървя напред.

Това, което липсва е изходния код и намирам за полезно да го споделя, за бъдещите първолаци.

common.php
Код: PHP
  1. <?php
  2.         session_name("voting");
  3.         session_start();
  4.        
  5.         $con = mysql_connect(
  6.                         'localhost', //localhost       
  7.                         'infinity1305',  //user
  8.                         'loveme'   //pass
  9.                 ) or die('No server');
  10.                                                
  11.         mysql_select_db('voting',$con) or die('No DB');

logout.php
Код: PHP
  1. <?php
  2.     session_name("voting");
  3.     session_start();
  4.     header('Location:index.php');

index.php
Код: PHP
  1. <?php
  2. include('common.php');
  3. if ($_SESSION['is_logged']===true)//логнатите пренасочваме в voting.php
  4.  {
  5.     header('Location: voting.php');
  6.     exit();
  7.  }
  8.  else{
  9.      //логваме регистрирани
  10.      if(isset($_POST)){
  11.          $name = addslashes(trim($_POST['login']));
  12.          $pass = trim($_POST['pass']);
  13.          if(strlen($name)>3 && strlen($pass)>3)
  14.          {     
  15.              //търсим съвпадение от формата с БД
  16.              $rs=mysql_query('SELECT * FROM `voting`.`users` WHERE login="'.$name.'" AND pass="'.md5($pass).'"');
  17.              
  18.              $row = mysql_fetch_assoc($rs);
  19.              
  20.              //ако има, # ще е по > 0 , значи има и присвояваме в сесия
  21.              if($row['user_id']>0){
  22.                  $_SESSION['is_logged']=true;
  23.                  $_SESSION['user_id']= $row['user_id'];
  24.                  header('Location: voting.php');
  25.                  exit();
  26.              }
  27.              else{
  28.                  $err['wrong']=' wrong user name';
  29.              }
  30.          }
  31.          else{
  32.                 $err['pass']=' short name/password';
  33.              }
  34.      }
  35.  }
  36.  
  37. ?>
  38.  
  39. <!DOCTYPE html>
  40. <html>
  41.  <head>
  42.     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  43.     <title>Voting</title>
  44.  </head>
  45.     <body>
  46.        
  47.         <form action="" method="post">
  48.            <p>Name:<input type="text" name="login"/> <?php echo $err['wrong']; ?></p>
  49.            <p>Login:<input type="password" name="pass"/><?php echo $err['pass']; ?></p>
  50.            <p><input type="submit" value="Go"/><p>
  51.         </form>
  52.  
  53.     </body>
  54. </html>

voting.php
Код: PHP
  1. <?php
  2. include('common.php');
  3.  
  4. if ($_SESSION['is_logged']!==true)
  5.  {
  6.     header('Location: index.php');
  7.     exit(); //любопитните обратно в index.php
  8.  }
  9.  else {
  10.    
  11.         //определяме избора от GET заявката
  12.         parse_str($_SERVER['QUERY_STRING'],$result);
  13.         $id = intval($result['choice']);
  14.  
  15.         if($id>0 && $id<5)
  16.         {
  17.             //превантивна проверка дали не е гласувал вече
  18.            $rs = mysql_query('SELECT COUNT(*) as cnt FROM voted WHERE user_id ='.$_SESSION['user_id'].' AND date >'.(time()-(24*60*60)));//1 day in seconds
  19.            $row = mysql_fetch_assoc($rs);
  20.            mysql_errno();
  21.            
  22.            //ако мине е гласувал
  23.            if(!$row['cnt'] > 0)
  24.            {
  25.                  //гласуване
  26.                 $rs = mysql_query('SELECT id FROM `voting`.`voting_c` WHERE id='.$id);
  27.                 $row = mysql_fetch_assoc($rs);
  28.  
  29.                 //сверяваме заявката с наличната в БД
  30.                 if($row['id'] == $id)
  31.                 {      
  32.                     //записваме избора на потребитея
  33.                     mysql_query('UPDATE `voting`.`voting_c` SET total_votes = total_votes + 1 WHERE `id`='.$id);
  34.  
  35.                     //маркираме потребителя, за да го спрем с/у повторно гласуване
  36.                     mysql_query('INSERT INTO `voting`.`voted`(`user_id`,`choice`, `date`) VALUES('.$_SESSION['user_id'].','.$id.','.time().' )');
  37.                     $message = 'Thank You for your voting';
  38.                 }
  39.                 else
  40.                 {
  41.                     $message = 'Error in voting';
  42.                 }  
  43.            }
  44.            
  45.            else
  46.            {
  47.                 $message = 'You already voted, try again later';
  48.            }
  49.         }
  50.     }
  51. ?>
  52. <!DOCTYPE html>
  53. <html>
  54.     <head>
  55.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  56.         <title>Voting page</title>
  57.     </head>
  58.     <body>
  59.         <a href="logout.php">logout</a>
  60.         <div id="vots"><div>The best language</div>
  61.         <ul>
  62.            
  63.     <?php
  64.         if(!empty($message))
  65.         {
  66.             echo $message;
  67.         }
  68.             $rs=mysql_query('SELECT * FROM `voting`.`voting_c`');
  69.             while($row=mysql_fetch_assoc($rs))
  70.             {           //печатим анкетата
  71.                 echo '<li><a href="voting.php?choice='.$row['id'].'">'.$row['name'].'</a></li>';
  72.             }
  73.      ?>
  74.         </ul>
  75.         </div>
  76.     </body>
  77. </html>

Слагам си зелена точка за старанието и до нови срещи!













SocialEvil

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 3
  • -Получени: 4
  • Публикации: 463
Re: Система за гласуване
« Отговор #17 -: 23 Октомври 2011, 00:39:36 »
изгради си навик - коментарите на английски (не се заяждам, аз дори не слагам коментари).. просто искам зелена точка хахаха
Please allow me to introduce myself
I'm a man of wealth and taste
I've been around for a long, long year
Stole many a man's soul and faith

HD

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 208
  • -Получени: 165
  • Публикации: 3077
Re: Система за гласуване
« Отговор #18 -: 23 Октомври 2011, 04:11:46 »
Коментарите са задължителни в кода. Тия дето не ги пишат трябва да бъдат застреляни. Иначе е желателно да са на английски, но не е задължително.

HanKrum

  • Гост
Re: Система за гласуване
« Отговор #19 -: 23 Октомври 2011, 11:20:37 »
Кода на английски, коментарите на английски еееееееееее, стига!!!
Който се интересува какво съм писал да чете кода или да научи български!!!  ;D

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: Система за гласуване
« Отговор #20 -: 23 Октомври 2011, 12:05:50 »
Кода на английски, коментарите на английски еееееееееее, стига!!!
Който се интересува какво съм писал да чете кода или да научи български!!!  ;D
Проблема не е в знанието на езици, аз лично пиша коментарите на английски щото съм патил, при пречупване на код кирилицата отива по дяволите, все едно няма коментар, пък дори и да не знаеш английски съм по склонен да гледам коментар на шльокавица, отколкото на кирилица.
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

zaona7

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 15
Re: Система за гласуване
« Отговор #21 -: 19 Ноември 2011, 01:58:24 »
Здравейте пак ви търся за грешки.Почнах да правя Системата за гласуване но както винаги се спънах....
Това ми е index.php
<?php
error_reporting
(E_ALL E_NOTICE E_WARNING);
include 
'common.php';
if(
$_SESSION['is_logged']===true)
{
header('Location: voting.php');
exit;
}
else
{
if($_POST['login_f']==1)
{
$name addslashes(trim($_POST['login_f']));
$pass trim($_POST['pass']);
if(strlen($name)>&& strlen($pass)>3)
{
$rs mysql_query('SELECT * FROM users WHERE login="'.$name.'"And
pass="'
.md5($pass).'"');
$row mysql_fetch_assoc($rs);
if($row['user_id']>0)
{
$_SESSION['is_logged']=true;
$_SESSION['user_id']=$row['user_id'];
header('Location: voting.php');
exit;
}
else
{
$err "<h1>Грешно потребителско име или Парола</h1>";
}
}
}
}



?>

<html>
<head>
<title>Гласуване</title>
</head>
<body>
<?php
echo $err;
?>

<form action="index.php" method="post">
Username <input type="text" name="username"><br>
Password <input type="text" name="pass"><br>
<input type="hidden" name="login_f" value="1">
<input type="submit" value="submit">
</form>



</body>
Същност не ми дава точно грешка но не ми изпълнява кода.Прочетох темата на Infiniti  е имало същата грешка но не можах да я оправя.
Нито ми дава да се логна нито ми изписва текста от променливата $rs
Благодаря предварително!!

Stan

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 27
  • -Получени: 135
  • Публикации: 641
Re: Система за гласуване
« Отговор #22 -: 19 Ноември 2011, 11:19:49 »
На пръв прочет виждам, че се работи със сесии, а никъде в началото не виждам session_start() освен ако не е в common.php... второ там, където взимаш стойностите от input полетата на $name задай $_POST['username'] ,вместо $_POST['login_f'] .. трето, когато пишеш sql заявка пиши я правилно AND  се пише с големи букви и отделено от login="'.$name.'" и не на последно място научи се да пишеш правилно html код - затваряй таговете.

Код: HTML
  1. <input type="" name="" />


вместо

Код: HTML
  1. <input type="" name="" >


Код: HTML
  1. <br />

вместо

Код: HTML
  1. <br>

Код: HTML

« Последна редакция: 19 Ноември 2011, 11:30:45 от abcd »

zaona7

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 15
Re: Система за гласуване
« Отговор #23 -: 19 Ноември 2011, 22:21:49 »
Благодарности всичко вече е наред и мога да продължавам.Или както става въпрос в тази тема зелена точка :)

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: Система за гласуване
« Отговор #24 -: 19 Ноември 2011, 22:29:05 »
и не на последно място научи се да пишеш правилно html код - затваряй таговете.

Код: HTML
  1. <input type="" name="" />


вместо

Код: HTML
  1. <input type="" name="" >


Не се заяждам, само да се изясним:

Код: HTML
  1. <input type="" name="" >
Това си е съвсем правилен HTML код.


Код: HTML
  1. <input type="" name="" />
А това вече е XHTML, което просто е стандарт и изисква да се затварят таговете.
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

Stan

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 27
  • -Получени: 135
  • Публикации: 641
Re: Система за гласуване
« Отговор #25 -: 19 Ноември 2011, 23:23:06 »
Ако ме е разбрал дословно, да моя грешка.Просто съм свикнал на стандартизирания html4 дa си му казвам просто html,а чистия с големите букви и незатварящите се тагове за мен е "мъртъв" код.Ще е хубаво, ако поне малко се интересува от front end да види как се пише правилно,има информация тук, а и не само и то доста добра на български език да търси и да се учи. ;)

ashaman

  • Jr. Member
  • **
  • Благодарности
  • -Казани: 1
  • -Получени: 0
  • Публикации: 76
Re: Система за гласуване
« Отговор #26 -: 21 Ноември 2011, 19:14:57 »
Само прегледах урока, просто ме заинтересува коментара по въпроса за реалността на гласувалите и там процентите фейк, мм и също и само чекнах гугъла ама и там не съм, чел какво ще кажете за проверка на уникалността на гласуващия по мак адрес. Ако може да се направи така.. сигурно може. Преполагам? Но пък така теоретично, ще бъдат отрязани примерно, домакинство с един комп, нет кафета и на тоя принцип, различни потребители които ползват един пс. Не, че ще се юрнат да гласуват всички примерно някъде си. Но все пак, така ми е интерено да чуя какво ще кажете по тая ситуация.

zaona7

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 15
Re: Система за гласуване
« Отговор #27 -: 21 Ноември 2011, 20:27:26 »
Та отново съм аз и както винаги не мога да се оправя с База данни:
include 'common.php';
error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING);
$id = (int)$_GET['choise'];
if($id>0)
{
$rs = mysql_query('SELECT id FROM `voting_c` WHERE `id`='.$id);
$row = mysql_fetch_assoc($rs);
if($row['id']==$id)
{
mysql_query('UPDATE voting_c SET total_votes=total_votes+1 WHERE id='.$id);
mysql_query('INSERT INTO voted(`user_id`,`choise`,`date`)VALUES('
.$_SESSION['user_id'].','.$id.','.time().')');
$succes = true;
}
else
{

}
}
Ето това ми е кода не ми дава да гласувам и не го отбелязва в базата данни бихте ли ми обеснили защо колкото и да си сверявам кода не ми се получава и не мога да го оправя.
Благодаря предварително

Stan

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 27
  • -Получени: 135
  • Публикации: 641
Re: Система за гласуване
« Отговор #28 -: 21 Ноември 2011, 22:27:49 »
Е как ще ти даде да гласуваш като нямаш такъв код ? Не виждам никъде списъка с линкове,които трябвва да те пренасочват към същата страница само, че с различни стойности на get параметъра.Този код ще се "задейства" само ако имаш стойност в get параметъра "choise".Ако нямаш такъв, как очакваш да отбелязва и ъпдейтва в базата данни? За да тестваш дали ти работи дотук кода просто пиши в url-a -> voting.php?choise=1 и виж в базата данни дали всичко се записва правилно.

zaona7

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 15
Re: Система за гласуване
« Отговор #29 -: 21 Ноември 2011, 23:51:06 »
Благодаря много!! Линковете не съм ги публикувал имал съм правописна грешка.
« Последна редакция: 21 Ноември 2011, 23:54:23 от zaona7 »