Генератор случайных личностей

в 17:21, , рубрики: php, генерация, информационная безопасность, случайные числа

Иногда при регистрации на сайте не сильно хочется указывать свои настоящие пользовательские данные, тогда мы начинаем придумывать имя, фамилию, логин и т.д.
Мне пришла в голову идея сделать сервис, который будет это думать за нас.
Генератор случайных личностей - 1

Он получил название «Генератор случайных личностей». Его основная цель — создать пользователя с минимально повторяющимися данными.
Для такой генерации используется база, в которой более 100 имен, более 100 фамилий, 56 отчеств, более 3000 городов и 20 улиц, которые соединяются между собой в случайном порядке.
К этому всему ещё добавляются случайно сгенерированные номер дома, квартира, номер телефона (который генерируется тоже по частям 8-xxx-yyy-ww-qq), пароль и дата рождения (все числа с 1 по 28, все месяца и года с 1963 по 1995).

Логин генерируется из транслита фамилии и имени на латиницу, к которым добавляется случайное число от 15 до 398. Тем самым, если даже допустить вариант, что получатся одинаковые имя и фамилия, то возможность совпадения числа на конце логина стремится к нулю.

Посмотреть и пощупать можно тут: randus.pingvi.org

Кому интересно, исходный код:

<?php 
	//Генерируем фамилию
	$famtxt = file('bd/fam.txt'); 
	$famstr = $famtxt[ array_rand($famtxt) ]; 
	unset($famtxt); 

	//Генерируем имя
	$nametxt = file('bd/name.txt'); 
	$namestr = $nametxt[ array_rand($nametxt) ]; 
	unset($nametxt);

	//Генерируем отчество
	$otchtxt = file('bd/otch.txt'); 
	$otchstr = $otchtxt[ array_rand($otchtxt) ]; 
	unset($otchtxt);

	//Генерируем месяц
	$moutxt = file('bd/mou.txt'); 
	$moustr = $moutxt[ array_rand($moutxt) ]; 
	unset($moutxt); 

	//Генерируем улицу
	$streettxt = file('bd/street.txt'); 
	$streetstr = $streettxt[ array_rand($streettxt) ]; 
	unset($streettxt); 

	//Генерируем город
	$cititxt = file('bd/citi.txt'); 
	$citistr = $cititxt[ array_rand($cititxt) ]; 
	unset($cititxt); 

	//Генерируем пароль 
	$chars="qazxswedcvfrtgbnhyujmkiolp1234567890QAZXSWEDCVFRTGBNHYUJMKIOLP";  
	$max=12; 
	$size=StrLen($chars)-1; 
	$password=null; 
	while($max--) 
	$password.=$chars[rand(0,$size)];

	//Генерация логина
	function translit($str) {
		$tr = array(
		"А"=>"A","Б"=>"B","В"=>"V","Г"=>"G",
		"Д"=>"D","Е"=>"E","Ж"=>"J","З"=>"Z","И"=>"I",
		"Й"=>"Y","К"=>"K","Л"=>"L","М"=>"M","Н"=>"N",
		"О"=>"O","П"=>"P","Р"=>"R","С"=>"S","Т"=>"T",
		"У"=>"U","Ф"=>"F","Х"=>"H","Ц"=>"TS","Ч"=>"CH",
		"Ш"=>"SH","Щ"=>"SCH","Ъ"=>"","Ы"=>"YI","Ь"=>"",
		"Э"=>"E","Ю"=>"YU","Я"=>"YA","а"=>"a","б"=>"b",
		"в"=>"v","г"=>"g","д"=>"d","е"=>"e","ё"=>"e","ж"=>"j",
		"з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l",
		"м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
		"с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h",
		"ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"y",
		"ы"=>"yi","ь"=>"i","э"=>"e","ю"=>"yu","я"=>"ya",
		"."=>".","?"=>"?","/"=>"_","\"=>"_",
		"*"=>"_",":"=>":","*"=>"_","""=>"_","<"=>"_",
		">"=>"_","|"=>"_"
		);
		return strtr($str,$tr);
	};
	$login=translit($famstr).translit($namestr).rand(15, 398);;
	
?>
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
	<!--[if lt IE 9]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
	<title>Генератор случайных личностей</title>
	<meta name="keywords" content="генератор, случайно, хороший пароль, как придумать логин, одноразовая почта" />
	<meta name="description" content="Генератор случайных имени, даты рождения, логина и пароля." />
	<link href="css/bootstrap.css" rel="stylesheet">
	<link href="css/style.css" rel="stylesheet">
	<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
</head>

<body>

<div class="wrapper">
	<main class="content">
		<div class="ribbon"><div class="ribbon-stitches-top"></div><strong class="ribbon-content"><h1>Генератор случайных личностей</h1></strong><div class="ribbon-stitches-bottom"></div></div>
		<div class="gendata">
			<div class="form-group">
			    <label>Фамилия Имя Отчество</label>
			    <input type="text" class="form-control" value="<?php echo $famstr; ?> <?php echo $namestr; ?> <?php echo $otchstr; ?>">
			</div>
			<div class="form-group">
			    <label>Дата рождения</label>
			    <input type="text" class="form-control" value="<?php echo rand(1, 28); ?> <?php echo $moustr; ?> <?php echo rand(1963, 1995); ?> года">
			</div>
			<div class="form-group">
			    <label>Адрес</label>
			    <input type="text" class="form-control" value="г.<?php echo $citistr; ?>, ул. <?php echo $streetstr; ?>, дом <?php echo rand(1, 98); ?>, квартира <?php echo rand(1, 298); ?>">
			</div>
			<div class="form-group">
			    <label>Номер телефона</label>
			    <input type="text" class="form-control" value="8 (<?php echo rand(111, 999); ?>) <?php echo rand(111, 999); ?>-<?php echo rand(11, 99); ?>-<?php echo rand(11, 99); ?>">
			</div>
			<div class="form-group">
			    <label>Логин</label>
			    <input type="text" class="form-control" value="<?php echo $login; ?>">
			</div>
			<div class="form-group">
			    <label>Пароль</label>
			    <input type="text" class="form-control" value="<?php echo $password; ?>">
			</div>
			<a href="http://temp-mail.ru" class="btn btn-primary" target="_blank">Открыть одноразовую почту</a> 
			<button onClick='parent.location="javascript:location.reload()"' class="btn btn-success">Хочу другого пользователя</button>
			<button type="button" class="btn btn-info" data-toggle="modal" data-target="#about"><span class="glyphicon glyphicon-question-sign"></span></button>
		</div><br><br>
		<small>
			Используя сгенерированные случайным образом данные Вы подтверждаете свою дееспособность и достижение совершеннолетнего возраста.
			Любые совпадения с реальностью являются случайными!
			Мы не несём ответственности за использование Вами полученных данных. <span class="glyphicon glyphicon-user"></span> 18+
		</small><br><br>
		<center><a href="https://db.tt/0PC1J8o1" target="_blank"><img src="css/db.png"></a></center>
	</main>
</div>
<!-- О проекте -->
<div class="modal fade" id="about" tabindex="-1" role="dialog" aria-labelledby="aboutLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
        <h4 class="modal-title" id="aboutLabel">О проекте</h4>
      </div>
      <div class="modal-body">
        <p>Очень часто нам бывает нужно зарегистрироваться на каком-либо  сайте, но не всегда хочется вводить свои настоящие данные. Что бы не придумывать "фейковые" имена, можно воспользоваться этим сайтов.<br>
        Структура генерации данных настолько различна, что вариант выпадения двух одинаковых пользователей равен почти нулю.</p>
        <p>В базе имеется более 100 имен, более 100 фамилий, 56 отчеств, более 3000 городов и 20 улиц, которые соединяются между собой в случайном порядке. Кроме этого, к этому всему ещё добавляются случайно сгенерированные номер дома, 
        квартира, номер телефона (который генерируется тоже по частям 8-xxx-yyy-ww-qq), пароль и дата рождения (все числа с 1 по 28, все месяца и года с 1963 по 1995).</p>
        <p>Логин создаётся из имени, фамилии и случайного числа от 15 до 398. Всё это позволяет создать по-настоящему уникального случайного пользователя!</p>
        <p>Используя сгенерированные случайным образом данные Вы подтверждаете свою дееспособность и достижение совершеннолетнего возраста.</p>
        <p>Любые совпадения с реальностью являются случайными!<br>Мы не несём ответственности за использование Вами полученных данных.</p>
        <p class="text-right"><b>Для лиц старше 18 лет</b></p>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Закрыть</button>
      </div>
    </div>
  </div>
</div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="js/bootstrap.js"></script>
</body>
</html>

Автор: pingvi69

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js