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

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

gatakka

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 0
  • -Получени: 19
  • Публикации: 681
Система за гласуване
« -: 20 Февруари 2010, 21:55:27 »
** Тази тема дискутира:: Система за гласуване **

« Последна редакция: 23 Март 2015, 23:06:55 от Avalanche »
За да знаеш трябва да питаш,
но за да знаеш някой трябва да ти отговори на питанията.
Добре дошли в Научи Ме!

Digital_Person

  • Full Member
  • ***
  • Благодарности
  • -Казани: 1
  • -Получени: 0
  • Публикации: 115
Отг:Система за гласуване
« Отговор #1 -: 20 Февруари 2010, 22:00:29 »
Здравайте възникна ми малък проблем с който немога да се оправя.
Значи проблем е следния като цъкна на листа и не ми изважда съобщението
така както аз си го мисля проблема трябва да е с $_GET променливата защото не успявам да попадана в условието (зададох условие if($id==0) и кода се изпълни )
<?php
include  &#39; functions.php &#39; ;
$id=(int)$_GET[ &#39; choise &#39; ];
    
if($id>0){
        
$rs=mysql_query( &#39; SELECT id FROM vote WHERE id= "  &#39; .$id. &#39;  "  &#39; );
         
$row=mysql_fetch_assoc($rs);
         if(
$row[ &#39; id &#39; ]==$id){
            
mysql_query( &#39; UPDATE votes SET total_votes=total_votes+1 WHERE id= &#39; .$id);
             
$succses=true;
      }
    }
?>

<!DOCTYPE HTML PUBLIC  " -//W3C//DTD HTML 4.01 Transitional//EN " >
<html>
    <head>
        <meta http-equiv= " Content-Type "  content= " text/html; charset=UTF-8 " >
        <title></title>
    </head>
    <body>
         <a href= " logout.php " >logout</a>
    <?php
         
if($succses==true){
        echo  
" Thank you for vote! " ;
    }
    else{
    echo  &
#39;  <div id= " vote " ><div>The best language IN THE WORLD!</div><ul> &#39; ;
        
$rs=mysql_query( &#39; SELECT * FROM vote &#39; );
        
while($row=mysql_fetch_assoc($rs))
        {
            echo  &
#39; <li><a href= " voting.php?choise. &#39; .$row[ &#39; id &#39; ]. &#39;  " > &#39; .$row[ &#39; name &#39; ]. &#39; </a></li> &#39; ;
        
}

   echo  &
#39; </ul></div> &#39; ;
    
}

     
?>
     </body>
</html>
« Последна редакция: 03 Декември 2010, 14:19:48 от borovaka »
Който никога не е грешил,
никога не е опитвал
нещо ново.

Digital_Person

  • Full Member
  • ***
  • Благодарности
  • -Казани: 1
  • -Получени: 0
  • Публикации: 115
Отг:Система за гласуване
« Отговор #2 -: 20 Февруари 2010, 22:37:12 »
Открих си грешката съжалявам за поста.
Който никога не е грешил,
никога не е опитвал
нещо ново.

infinity1305

  • Jr. Member
  • **
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 55
Re: Система за гласуване
« Отговор #3 -: 03 Септември 2011, 13:51:36 »
Разучавам урока и откривам кусури в първите 5мин. Аз работя в строг режим на php.ini.

При старт на index.php гърми забрана за потребителя ми в БД.
Никъде в урока не видях привилегии на потребителя за конкретната БД, а само запис на такъв потребител в таблица `users`.
<?php
session_start
();
mysql_connect('localhost','gatakka','qwerty') or die('no server');
mysql_select_db('voting') or die('no db');

 Имам в предвид Priviliges > Add a new User  > Global privileges, на когото са запълнение User name, Host, Password, Re-type. Смятам, че потребител gatakka и парола qwerty са зададени в  Priviliges > Add a new User . А това, че те са същите в таблица `voting`.`users` не значи, че mysql_connect(); ще сработи.

Втори кусур е недефенирана променлива $_SESSION['is_logged']===true. За нея по-нататък в урока ще ми се изясни. Подтиснах с @ забележката.

И конкретно питане. Защо в common.php се премахва затварящ таг ?>.
За такъв стил на писане срещах някъде, че било свързано с сигурността, ако се меши php koд с html такъв. Така ли е ?

echeveria

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 72
  • -Получени: 93
  • Публикации: 4836
Re: Система за гласуване
« Отговор #4 -: 03 Септември 2011, 14:12:03 »
Иван вече не отговаря на въпроси на потребители отдавна - ако имаш някакво наистина конкретно питане или възражение - ок, ама иначе...
Днес Печатарите използват парите за да купят мозъците на онези, които ги превъзхождат, за да ги накарат да им служат и така да се превърнат в жертва на посредствеността. Това ли е причината, поради която ги наричате благо?
<iframe src="http://www.corbindavenport.com/ubuntu/widget.html" style="width:

infinity1305

  • Jr. Member
  • **
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 55
Re: Система за гласуване
« Отговор #5 -: 03 Септември 2011, 14:28:43 »
Явно ме четеш по диагонал.

 Цитирам се:
Защо в common.php се премахва затварящ таг ?>.
За такъв стил на писане срещах някъде, че било свързано с сигурността, ако се меши php koд с html такъв. Така ли е ?


И пак. В урoka потребител "gatakka" и парола "qwerty" има привилегии, за да се логне в MySQL, което не е показано на практика.

изгледай първите 5мин от урока и си задай въпроса може ли без привилегии само по един запис в таблица users да се логне в БД.

приятен ден

echeveria

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 72
  • -Получени: 93
  • Публикации: 4836
Re: Система за гласуване
« Отговор #6 -: 03 Септември 2011, 14:37:44 »
Да, баш по диагонал чета, не съм и гледал урока! Ако Иван е писал видеото с недбийн то няма нужда да затваря тага - това си е работа на редактора!
Това е УРОК и както виждаш темата не е за привилегии на базата - някак много на вътре ги взимаш тия уроци и ти убягва насочеността!
« Последна редакция: 03 Септември 2011, 14:39:32 от echeveria »
Днес Печатарите използват парите за да купят мозъците на онези, които ги превъзхождат, за да ги накарат да им служат и така да се превърнат в жертва на посредствеността. Това ли е причината, поради която ги наричате благо?
<iframe src="http://www.corbindavenport.com/ubuntu/widget.html" style="width:

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: Система за гласуване
« Отговор #7 -: 03 Септември 2011, 15:17:50 »
Явно ме четеш по диагонал.

 Цитирам се:
Защо в common.php се премахва затварящ таг ?>.
За такъв стил на писане срещах някъде, че било свързано с сигурността, ако се меши php koд с html такъв. Така ли е ?


И пак. В урoka потребител "gatakka" и парола "qwerty" има привилегии, за да се логне в MySQL, което не е показано на практика.

изгледай първите 5мин от урока и си задай въпроса може ли без привилегии само по един запис в таблица users да се логне в БД.

приятен ден




For files that contain only PHP code, the closing tag ("?>") is never permitted. It is not required by PHP, and omitting it´ prevents the accidental injection of trailing white space into the response.

Във файл с разширение .php и само php код в него не е задължително да се поставя затварящ таг. Даже напротив, препоръчително е да НЕ се поставя! Не си спомням, но мисля, че common.php е точно такъв файл.
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

infinity1305

  • Jr. Member
  • **
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 55
Re: Система за гласуване
« Отговор #8 -: 03 Септември 2011, 18:07:28 »
Благодаря
Препоръчително е да се изпуска затварящия таг, заради инжекции. Само да го срещна отново това уточнение и ще се върна тук, за да го изясня до край.

Да си призная, зациклих. Идеята е ясно, изпълнение също. Обаче кодът не работи при мен.
Не показва грешка от неправилно въведени име и парола. Нещо повече при пробване показва внезапно грешка $err и после повторено не. Това е супер ташак. Не пренасочва към voting.php, ako въведа името и паролата, зададена в таблицата. Стоя си в index.php и силно ме демотивира.
Помислих, че netbeans бъгняви и се реснах под windows. Пуснах phpdesigner и същата нямка. Нищо не става. Формичка, в която си въвеждам произволни имена и нищо, при коректно - също. Нали ви казах - ташак!

Учтиво моля, който има желание да помогне, да протегне ръка. Няма нужда от вица за форумите. В американски ти помагат. В руски на въпрос получаваш въпроси, а в бг форум всеки ти обяснява колко си тъп.

index.php
<?php
include('common.php');
if(
$_SESSION['is_logged']===true)
    {
    
header('Location:voting.php');
    exit;
    }
else
    {
    if(
$_POST['login_f']==1)
    {
        
$name=addslashes(trim($_POST['login']));
        
$pass=trim($_POST['pass']);
        if(
strlen($name>3) && 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>Wrong User Name / Password </h1>';
                
            }
        }
        
    }
    
}
?>

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
<?=$err; ?>
        <form action="index.php" method="post">
            Name:<input type="text" name="login"><br >
            Login:<input type="text" name="pass">
            <input type="hidden" name="login_f" value="1">
            <input type="submit" value="Go">
        </form>
       
       
    </body>
</html>

voting.php
<?php
include('common.php');
echo 
'Hello man';
?>

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>

        <a href="logout.php" >Logout</a>   
       
    </body>
</html>

common.php
<?php
session_name
("voting");
session_start();
$con=mysql_connect('localhost','gatakka','qwerty') or die('No server');
mysql_select_db('voting',$con) or die('No DB');

изгледайте първите 5 мин на клипа. Те са достатъчни за същността на задачата. Ако е нужен дъмп на базата ми- ще направя.

 

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: Система за гласуване
« Отговор #9 -: 03 Септември 2011, 18:38:52 »

Код: PHP
  1. <?php
  2.         if(strlen($name>3) && strlen($pass)>3)
  3.         {
  4.            
  5.         }
  6.    


Код: PHP
  1. var_dump(strlen($name > 3));
  2. // in browser -> int(1) aka true
  3.  

Объркала си една затваряща скоба, пробвай така:


Код: PHP
  1. strlen($name) > 3 && strlen($pass) > 3
« Последна редакция: 03 Септември 2011, 18:41:45 от Avalanche »
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

infinity1305

  • Jr. Member
  • **
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 55
Re: Система за гласуване
« Отговор #10 -: 03 Септември 2011, 19:23:21 »
Мерси!
Това май е семантична грешка. Ако бе синтактична редакторите щяха да псуват, а те мълчаха.
Под windows с php 5.2.1  това сработи само първата част. Сложа ли коректна парола и име ме плюва за 17 ред, но го зарязах. Под ubuntu  с netbeans и php 5.3 сработи по видяното в урока. От 12:00ч тъпея пред компа и хей на, сега мога да продължа.

Награждавам те с зелена точка (това е най-висока градиация). Който събере най-много точки в края на годината получава право да се снима с мен и котарака Кики пред фонтаните на НДК.

Сега ще си срежа един сочен каун, за да подсиля сивото си вещество и продължавам да уча магията на PHP.

jazzman

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 25
  • -Получени: 190
  • Публикации: 3624
Re: Система за гласуване
« Отговор #11 -: 03 Септември 2011, 23:39:13 »
Тук има доста ергени, само със зелени точки и снимки пред НДК, няма да мине номера  ;)
Относно уроците:
Времената се менят, езика също, остава само логиката и начина на изпълнението и.
Java is to Javascript as fun is to funeral.

http://nau4i.me/forum/index.php/topic,15129.0.html

wuser

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 85
  • -Получени: 49
  • Публикации: 2761
Re: Система за гласуване
« Отговор #12 -: 04 Септември 2011, 09:39:44 »
Инфинити момиче ли е? какво е каун? Звучи като някаква захранка за прасета. Като рече, че редакторите я псували, си помислих, че ние и си викам кога бре? А то било, абе и аз не знам какво, защото не съм го ползвал. Относно Шиндош. След като те цеди на тоя ред:

  $row=mysql_fetch_assoc($rs);

Съвсем очевидно не успяваш да осъществиш връзка с базата. Какво да ти кажа? Дебъгваййййй!
Мъдростта на патилото
Perl Monks: PHP - it's "training wheels without the bike" -- Randal L. Schwartz


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

HD

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 208
  • -Получени: 165
  • Публикации: 3077
Re: Система за гласуване
« Отговор #13 -: 04 Септември 2011, 09:48:12 »
@wuser  Каун е пъпеш на диалект ;D

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: Система за гласуване
« Отговор #14 -: 04 Септември 2011, 19:11:39 »
Хмм вече получаваме и награди, страхотно! ::)
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!