Добрый день, Всем! Мне нужно чтобы викторину человек с одним мейлом повторно не мог проходить тест, а сейчас это возможно. Помогите пожалуйста. Код теста <?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"; } ?>
Re: Это готовый скрипт теста, мне нужно чтобы человек не мог В начале запрашиваете мейл пользователя, делаете запрос в базу, есть ли строки с таким емейлом, если есть - посылаете. И, да, не знаю, по каким материалам вы учитесь, но они вас плохому учат. Вот уже по одной строке видно: $link = @mysql_connect ("$sql_host", "$sql_id", "$sql_pass") or die ("Нема конекта"); - зачем присваивать результат переменной, которая потом никогда и нигде не используется? - зачем цельные переменные заключать в кавычки? - наконец, зачем здесь собака?
Re: Это готовый скрипт теста, мне нужно чтобы человек не мог Я новичок в этом деле и пока плохо понимаю что к чему относиться и спасибо что уделили время )) У меня возник еще один вопрос, я сделать в бд 'email' UNIQUE теперь на сайте при повторном проходе теста выходит ошибка fig, и сам вопрос как вывести извещение о том что он проходит тест повторно место fig ? Добавлено спустя 16 минут 10 секунд: Re: Это готовый скрипт теста, мне нужно чтобы человек не мог пов Спасибо все решил ошибку ) могли бы посоветовать по каким материалам грамотно учат php?
Re: Это готовый скрипт теста, мне нужно чтобы человек не мог В скрипте, который вы показали, вывод только в одном месте $sql_ok = @mysql_query($sql) or die("fig"); $sql_ok = @mysql_query($sql) or die("Внимание! Вы проходите тест повторно!");
Re: Это готовый скрипт теста, мне нужно чтобы человек не мог По документации все больше. http://ru2.php.net/manual/ru/
Re: Это готовый скрипт теста, мне нужно чтобы человек не мог Спасибо большое Я так и сделал Добавлено спустя 31 секунду: Re: Это готовый скрипт теста, мне нужно чтобы человек не мог пов Спасибо буду изучать