За последние 24 часа нас посетили 22949 программистов и 1720 роботов. Сейчас ищут 1788 программистов ...

Это готовый скрипт теста, мне нужно чтобы человек не мог пов

Тема в разделе "Сделайте за меня", создана пользователем Айдос, 23 сен 2014.

  1. Айдос

    Айдос Новичок

    С нами с:
    23 сен 2014
    Сообщения:
    3
    Симпатии:
    0
    Добрый день, Всем!

    Мне нужно чтобы викторину человек с одним мейлом повторно не мог проходить тест, а сейчас это возможно.

    Помогите пожалуйста.

    Код теста

    <?php

    /// Настройки
    $sql_host="localhost";
    $sql_id="";
    $sql_pass="";
    $sql_db="";

    /// Далее ничего не трогать!
    $vopr=15;
    $html="";
    if(isset($_GET["page"])) { $page=addslashes($_GET["page"]); } else { $page=""; }
    if(isset($_GET["session"])) { $session=addslashes($_GET["session"]); } else { $session=""; }
    if(isset($_GET["vs"])) { $vs=addslashes($_GET["vs"]); } else { $vs=""; }
    $link = @mysql_connect ("$sql_host", "$sql_id", "$sql_pass") or die ("Нема конекта");
    $link2 = @mysql_select_db("$sql_db") or die ("aaa");
    if($page=="end") {
    $otvok=0;
    $otvno=15;
    $ball=0;
    $query = "SELECT * from vika_users WHERE session='$session';";
    $sort=@mysql_query($query);
    $row = @mysql_fetch_array($sort);
    $time=$row["date_b"]-$row["date_a"];
    $html.="<b>Ваш ник:</b> $row[user]<br> <b>Пройденое время:</b> $time секунд<p><hr size=\"1\" color=\"#CFCFCF\">";
    for($i=1; $i<=$vopr; $i++) {
    $vp="v$i";
    $op="o$i";
    $sql_o="";
    $query = "SELECT * from vika WHERE num='".$row["$vp"]."' LIMIT 1;";
    $sort=@mysql_query($query);
    $row2 = @mysql_fetch_array($sort);
    $tabl1=array(1=>"",2=>"",3=>"",4=>"");
    $tabl2=array(1=>"",2=>"",3=>"",4=>"");
    $ops=$row["$op"];
    $vps=$row2["otvet"];
    if($ops==$vps) {
    $tabl1["$ops"]="<table bgcolor=\"#7983C4\" cellspacing=2 cellpadding=2><tr><td width=\"400\" bgcolor=\"#EAF1FF\">";
    $tabl2["$ops"]="</td></tr></table>";
    $otvok++;
    $otvno--;
    $ball+=50;
    $sql_o.="y$i=1,";
    } else {
    $tabl1["$vps"]="<table bgcolor=\"#f0f0f0\" cellspacing=1 cellpadding=2><tr><td width=\"400\" bgcolor=\"#ffffff\">";
    $tabl2["$vps"]="</td></tr></table>";
    $tabl1["$ops"]="<table bgcolor=\"#7983C4\" cellspacing=1 cellpadding=2><tr><td width=\"400\" bgcolor=\"#ffffff\">";
    $tabl2["$ops"]="</td></tr></table>";
    $ball-=10;
    $sql_o.="y$i=0,";
    }

    $html.=<<<END
    <table width="500">
    <tr><td align="center"><b>$row2[vopros]</b></td></tr>
    <tr><td align="center">
    <table width="300">
    <tr><td>A</td><td>$tabl1[1] $row2[otvet1] $tabl2[1]</td></tr>
    <tr><td>B</td><td>$tabl1[2] $row2[otvet2] $tabl2[2]</td></tr>
    <tr><td>C</td><td>$tabl1[3] $row2[otvet3] $tabl2[3]</td></tr>
    <tr><td>D</td><td>$tabl1[4] $row2[otvet4] $tabl2[4]</td></tr>
    </table>
    </td></tr>
    </table>
    <hr size="1" color="#CFCFCF">
    END;
    $v[$i]=$row["v$i"];
    }

    if(300-$time > 0) { $ball+=300-$time; }
    if($ball < 0) { $ball=0; }
    $html.=<<<END
    <b>Правильно отвечено на</b> $otvok <b>вопросов</b><br>
    <b>Допущено</b> $otvno <b>ошибок</b><br>
    <p style='display:none;'><b>Всего набрано</b> $ball <b>очков</b></p>
    <div style='display:none;' align=center><a href="index.php">Смотреть результат в таблице результатов</a></div>
    END;
    $date_b=date("U");
    $sql="UPDATE vika_users SET
    yes=$otvok,
    no=$otvno,
    ball=$ball,
    vopros=1,
    $sql_o
    date_b=$date_b
    WHERE session=\"$session\" AND vopros=0";
    $sql_ok=@mysql_query($sql);

    } else if(isset($_POST["name"]) AND isset($_POST["email"]) AND $_GET["session"]) {
    $query = "SELECT num from vika";
    $sort=@mysql_query($query);
    $count=mysql_num_rows($sort);

    $countd=round($count/$vopr);
    $sql_a="";
    for($i=1; $i<=$vopr; $i++) {
    $a=$i*$countd-$countd+1;
    $b=$i*$countd;
    $sql_a.="\"".rand($a, $b)."\", ";
    }
    $date_a=date("U");
    $date_b=date("U");
    $user=addslashes($_POST["name"]);
    $email=addslashes($_POST["email"]);
    $ip="127.0.0.1";
    $session=addslashes($_GET["session"]);
    $query = "SELECT num from vika_users WHERE session='$session';";
    $sort=@mysql_query($query);
    $count=mysql_num_rows($sort);
    if($count==0) {
    if(strlen($user)!=0) {
    $sql=<<<END
    INSERT INTO vika_users (num, user, email, ip, ball, date_a, date_b, vopros, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, y12, y13, y14, y15, yes, no, session)
    VALUES (
    "", "$user", "$email", "$ip", 0, "$date_a", "$date_b", 0, $sql_a 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "$session"
    );
    END;


    $sql_ok = @mysql_query($sql) or die("fig"); /// создаем таблицы
    } else { $html="Заполните все поля.<br>Вернитесь назад и исправьте все ошибки"; }


    }


    else { $sql=1; }




    $html = "<a href=\"index.php?session=$session\">Начать тест</a>";
    } else if(isset($_GET["session"])) {

    if(isset($_POST["vopros"]) AND isset($_POST["vs"])) {
    $vopros=addslashes($_POST["vopros"]);
    $vs=round(addslashes($_POST["vs"]));
    $date_b=date("U");
    $sql="UPDATE vika_users SET $vopros=\"$vs\", date_b=$date_b WHERE session=\"$session\" AND vopros=0";
    $sql_ok=@mysql_query($sql);
    }


    $i=0;
    $j=0;
    $query = "SELECT * from vika_users WHERE session='$session';";
    $sort=@mysql_query($query);
    $row = @mysql_fetch_array($sort);
    for($j=1; $j<=$vopr; $j++) {
    if($row["o$j"]==0) { $i++; $v[$i]=$row["v$j"]; $nam[$i]="o$j"; }
    }

    if(isset($v[1])) {
    $query = "SELECT * from vika WHERE num='$v[1]';";
    $sort=@mysql_query($query);
    $row = @mysql_fetch_array($sort);

    $table1="<table bgcolor=\"#f0f0f0\" cellspacing=1 cellpadding=2><tr><td width=\"400\" bgcolor=\"#ffffff\">";
    $table2="</td></tr></table>";

    $html=<<<END
    <table>
    <form action="index.php?session=$session" method="post">
    <input type="hidden" size="1" name="vopros" value="$nam[1]">
    <tr><td><b>$row[vopros]</b></td></tr>
    <tr><td>$table1 A<input type="radio" name="vs" value="1" id="1"> <label for="1">$row[otvet1]</label> $table2</td></tr>
    <tr><td>$table1 B<input type="radio" name="vs" value="2" id="2"> <label for="2">$row[otvet2]</label> $table2</td></tr>
    <tr><td>$table1 C<input type="radio" name="vs" value="3" id="3"> <label for="3">$row[otvet3]</label> $table2</td></tr>
    <tr><td>$table1 D<input type="radio" name="vs" value="4" id="4"> <label for="4">$row[otvet4]</label> $table2</td></tr>
    <tr><td><input type="submit" value="Далее"></td></tr>
    </from>
    </table>
    END;
    } else {
    $query = "SELECT num from vika_users WHERE session='$session';";
    $sort=@mysql_query($query);
    $count=mysql_num_rows($sort);

    if($count==1) { $html="<meta http-equiv='refresh' content='1; url=index.php?page=end&session=$session'>Тест закончен, подводим итоги."; }
    else { $html="<meta http-equiv='refresh' content='2; url=index.php'>Заполните все поля.<br>Вернитесь назад и исправьте все ошибки"; }
    }
    } else {
    $session=md5(date("U")+rand(1,100));
    $html=<<<END
    <table><tr><td>
    <table width=180>
    <form action="index.php?session=$session" method="post">
    <tr><td>Имя</td><td><input type="text" size="15" name="name" value=""></td></tr>
    <tr><td>e-mail</td><td><input type="text" size="15" name="email" value=""></td></tr>
    <tr><td colspan=2><input type="submit" value="Отправить"></td></tr>
    </from>
    </table>
    </td><td><p style='margin-top:-30px;'>В течении теста вам нужно будет ответить на 15 вопросов, не забывайте что время и правильность ответов влияет на оценку!</p> </td></tr></table>
    <hr style='display:none;' size="1" color="#CFCFCF">
    <table style='display:none;' width="100%" cellspacing=1 cellpadding=0>
    END;

    $query_as = "SELECT * from vika_users WHERE vopros=1 ORDER BY ball DESC LIMIT 50";
    $sort_as=@mysql_query($query_as) or die ("База пуста 14 $query_as");
    $i=0;
    $table1="<table style='display:none;' bgcolor=\"#99ABD5\" cellspacing=1 cellpadding=1 width=\"100%\">";
    $table2="</td></tr></table>";

    $html.="<tr >
    <td width=30 rowspan=2>$table1 <tr><td height=30 bgcolor=\"#EAEAEA\" align=center> № $table2</td>
    <td>$table1 <tr><td height=30 bgcolor=\"#EAEAEA\" align=center> Имя $table2</td>
    <td width=60>$table1 <tr><td height=30 bgcolor=\"#EAEAEA\" align=center> Очки $table2</td>
    <td width=120 colspan=2>$table1 <tr><td bgcolor=\"#EAEAEA\" align=center colspan=2> Ответы </td></tr><tr><td width=60 align=center bgcolor=\"#EAEAEA\"> верно </td><td width=60 align=center bgcolor=\"#EAEAEA\"> не верно $table2</td>
    <td width=100>$table1 <tr><td height=30 bgcolor=\"#EAEAEA\" align=center> Дата $table2</td>
    <tr>
    ";
    $table1="<table bgcolor=\"#99ABD5\" cellspacing=1 cellpadding=1 width=\"100%\"><tr><td bgcolor=\"#F4F4F4\" align=center>";
    $table2="</td></tr></table>";

    while ($row = @mysql_fetch_object($sort_as)) {
    $i++;
    $html.="<tr>
    <td width=30>$table1 $i $table2</td>
    <td>$table1$row->user$table2</td>
    <td width=60>$table1$row->ball$table2</td>
    <td width=60>$table1$row->yes$table2</td>
    <td width=60>$table1$row->no$table2</td>
    <td width=100>$table1".date("d.n.Y", $row->date_b)."$table2</td>
    <tr>";
    }
    $html.="</table>";
    }
    $template = file ('header.html');
    if(!isset($html)) { $html = "Ошибка 404"; $page_name=" : Ошибка 404"; }
    if(!isset($page_name)) { $page_name=" : Error Name Page"; }

    foreach ($template as $temp) {
    $temp = ereg_replace("<!--text-->", "$html", $temp);
    echo "$temp";
    }

    ?>
     
  2. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    Re: Это готовый скрипт теста, мне нужно чтобы человек не мог

    В начале запрашиваете мейл пользователя, делаете запрос в базу, есть ли строки с таким емейлом, если есть - посылаете.
    И, да, не знаю, по каким материалам вы учитесь, но они вас плохому учат. Вот уже по одной строке видно:
    $link = @mysql_connect ("$sql_host", "$sql_id", "$sql_pass") or die ("Нема конекта");
    - зачем присваивать результат переменной, которая потом никогда и нигде не используется?
    - зачем цельные переменные заключать в кавычки?
    - наконец, зачем здесь собака?
     
  3. Айдос

    Айдос Новичок

    С нами с:
    23 сен 2014
    Сообщения:
    3
    Симпатии:
    0
    Re: Это готовый скрипт теста, мне нужно чтобы человек не мог

    Я новичок в этом деле и пока плохо понимаю что к чему относиться и спасибо что уделили время ))

    У меня возник еще один вопрос, я сделать в бд 'email' UNIQUE теперь на сайте при повторном проходе теста выходит ошибка fig, и сам вопрос как вывести извещение о том что он проходит тест повторно место fig ?

    Добавлено спустя 16 минут 10 секунд:
    Re: Это готовый скрипт теста, мне нужно чтобы человек не мог пов
    Спасибо все решил ошибку ) могли бы посоветовать по каким материалам грамотно учат php?
     
  4. dcc0

    dcc0 Активный пользователь

    С нами с:
    27 июн 2014
    Сообщения:
    214
    Симпатии:
    4
    Re: Это готовый скрипт теста, мне нужно чтобы человек не мог

    В скрипте, который вы показали, вывод только в одном месте

    $sql_ok = @mysql_query($sql) or die("fig");
    $sql_ok = @mysql_query($sql) or die("Внимание! Вы проходите тест повторно!");
     
  5. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    Re: Это готовый скрипт теста, мне нужно чтобы человек не мог

    По документации все больше. http://ru2.php.net/manual/ru/
     
  6. Айдос

    Айдос Новичок

    С нами с:
    23 сен 2014
    Сообщения:
    3
    Симпатии:
    0
    Re: Это готовый скрипт теста, мне нужно чтобы человек не мог

    Спасибо большое Я так и сделал

    Добавлено спустя 31 секунду:
    Re: Это готовый скрипт теста, мне нужно чтобы человек не мог пов
    Спасибо буду изучать