Кратко : - Что такое facemash? Это сайт, на котором нужно выбирать наиболее привлекательного человека из двух, случайно предложенных. Итак,есть скрипт по facemash,но проблема в том что один юзер может голосовать over 999 раз ,что делает проект мертвым и соответственно смысл заливать в сеть его нету. Может кто нибудь добавить в скрипт проверку по ip и cookie за "огромное спасибо" или за небольшую оплату ? Или сделать так : когда перед юзером появляется 2 фотки ,он соответственно выбирает одну из них и идет дальше ,тогда ту пару что была до - убираем и больше не показываем. Также нужно чтоб по окончанию голосования появлялась главная страница с надписью "вы уже голосовали" и ,если пользователь снова заходит на сайт то идет соответственно проверка по ip и cookie . Сам в php на 1 уровне ,знаю чуть-чуть Вот собственно сам скрипт : http://facemash.moefelt.dk/facemash-clone-1.0beta.zip Или для тех кто не хочет скачивать есть 2 основных файла : index.php и rate.php Index.php Код (Text): <?php /* * Title: Facemash-Alike Script * Author: Anders Moefelt / http://moefelt.dk * Version: 1.0 * * Great resources: * * 1) http://www.jasonhuber.net/the-social-network-rating-formula-elo/ * 2) http://www.imdb.com/title/tt1285016/ * 3) http://en.wikipedia.org/wiki/Mark_Zuckerberg * 4) http://www.facebook.com/markzuckerberg * * Performance rating = [(Total of opponents' ratings + 400 * (Wins - Losses)) / score]. */ include('mysql.php'); include('functions.php'); // Get random 2 $query="SELECT * FROM images ORDER BY RAND() LIMIT 0,2"; $result = @mysql_query($query); while($row = mysql_fetch_object($result)) { $images[] = (object) $row; } // Get the top10 $result = mysql_query("SELECT *, ROUND(score/(1+(losses/wins))) AS performance FROM images ORDER BY ROUND(score/(1+(losses/wins))) DESC LIMIT 0,3"); while($row = mysql_fetch_object($result)) $top_ratings[] = (object) $row; // Close the connection mysql_close(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Facemash by _brm_</title> <style type="text/css"> body, html {font-family:Arial, Helvetica, sans-serif;width:100%;margin:0;padding:0;text-align:center;} h1 {background-color:#600;color:#fff;padding:20px 0;margin:0;} a img {border:0;} td {font-size:11px;} .image {background-color:#eee;border:1px solid #ddd;border-bottom:1px solid #bbb;padding:5px;} </style> </head> <body> <h1>Facemash by _brm_</h1> <h3>Голосуй за самую сексуальную девчонку! </h3> <h2>Who's hotter? Click to choose.</h2> <center> <table> <tr> <td valign="top" class="image"><a href="rate.php?winner=<?=$images[0]->image_id?>&loser=<?=$images[1]->image_id?>"><img src="images/<?=$images[0]->filename?>" /></a></td> <td valign="top" class="image"><a href="rate.php?winner=<?=$images[1]->image_id?>&loser=<?=$images[0]->image_id?>"><img src="images/<?=$images[1]->filename?>" /></a></td> </tr> <tr> <td>Won: <?=$images[0]->wins?>, Lost: <?=$images[0]->losses?></td> <td>Won: <?=$images[1]->wins?>, Lost: <?=$images[1]->losses?></td> </tr> <tr> <td>Score: <?=$images[0]->score?></td> <td>Score: <?=$images[1]->score?></td> </tr> <tr> <td>Expected: <?=round(expected($images[1]->score, $images[0]->score), 4)?></td> <td>Expected: <?=round(expected($images[0]->score, $images[1]->score), 4)?></td> </tr> </table> </center> <h2>Top 3 Rated</h2> <center> <table> <tr> <? foreach($top_ratings as $key => $image) : ?> <td valign="top"><img src="images/<?=$image->filename?>" width="70" /></td> <? endforeach ?> </tr> <? /* Remove this to see the scoring <tr> <? foreach($top_ratings as $key => $image) : ?> <td valign="top">Score: <?=$image->score?></td> <? endforeach ?> </tr> <tr> <? foreach($top_ratings as $key => $image) : ?> <td valign="top">Performance: <?=$image->performance?></td> <? endforeach ?> </tr> <tr> <? foreach($top_ratings as $key => $image) : ?> <td valign="top">Won: <?=$image->wins?></td> <? endforeach ?> </tr> <tr> <? foreach($top_ratings as $key => $image) : ?> <td valign="top">Lost: <?=$image->losses?></td> <? endforeach ?> </tr> */ ?> </table> </center> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Facemash by _brm_</title> <style type="text/css"> body, html {font-family:Arial, Helvetica, sans-serif;width:100%;margin:0;padding:0;text-align:center;} h1 {background-color:#600;color:#fff;padding:20px 0;margin:0;} a img {border:0;} td {font-size:11px;} .image {background-color:#eee;border:1px solid #ddd;border-bottom:1px solid #bbb;padding:5px;} </style> </head> <body> </body> </html> А вот rate.php Код (Text): <?php include('mysql.php'); include('functions.php'); // If rating - update the database if ($_GET['winner'] && $_GET['loser']) { // Get the winner $result = mysql_query("SELECT * FROM images WHERE image_id = ".$_GET['winner']." "); $winner = mysql_fetch_object($result); // Get the loser $result = mysql_query("SELECT * FROM images WHERE image_id = ".$_GET['loser']." "); $loser = mysql_fetch_object($result); // Update the winner score $winner_expected = expected($loser->score, $winner->score); $winner_new_score = win($winner->score, $winner_expected); //test print "Winner: ".$winner->score." - ".$winner_new_score." - ".$winner_expected."<br>"; mysql_query("UPDATE images SET score = ".$winner_new_score.", wins = wins+1 WHERE image_id = ".$_GET['winner']); // Update the loser score $loser_expected = expected($winner->score, $loser->score); $loser_new_score = loss($loser->score, $loser_expected); //test print "Loser: ".$loser->score." - ".$loser_new_score." - ".$loser_expected."<br>"; mysql_query("UPDATE images SET score = ".$loser_new_score.", losses = losses+1 WHERE image_id = ".$_GET['loser']); // Insert battle mysql_query("INSERT INTO battles SET winner = ".$_GET['winner'].", loser = ".$_GET['loser']." "); // Back to the frontpage header('location: /'); } ?> Мой скайп : faint.smith
Код (Text): $result = mysql_query("SELECT * FROM images WHERE image_id = ".$_GET['winner']." "); советую вобще не выкладывать эту поделку в сеть
имеется ввиду что я дам 10$ кто поможет сделать условия выше, или пусть пишут цену (у всех по разному) Добавлено спустя 27 секунд: это еще почему ?
у нас в стране принято писать гадости, вместо того, чтобы объяснять, разве вы не знали? =) Код (Text): $result = mysql_query("SELECT * FROM images WHERE image_id = ".$_GET['winner']." "); в переменную $_GET['winner'] можно вкрячить не только одно слово или цифру, но и целый запрос, который выполнится, т.к. вы вставляете без изменений содержимое переменной в свой. Вы же не проверяете что внутри. Так что это дыра в безопасности.
тьпу ты, а я уже приготовил алтарь из блейд-сервера, три литра крови админов и слез пользователей, плюс шерсть из свитера, который не стирали 13 лет. И вы вот так пишете, что не готовы к обряду посвящения?
это не проблема. Для голосования должна быть только одна страница, которая показывает случайную пару. Чтобы второй раз увидеть нужного человека, надо несколько раз обновить страницу, не говоря уже о той же паре (число рефрешей растет логарифмично). Чтобы нельзя было использовать атаку повторением HTTP запросов, надо формировать на сервере уникальный одноразовый временный токен для каждого показа страницы.