is115-php/modul2/index2_5.php

68 lines
2.3 KiB
PHP

<?php include 'common.php'; ?><!DOCTYPE html>
<html lang="no">
<head>
<title><?=title();?></title>
<link rel="stylesheet" href="index.css">
</head>
<body>
<div class="container">
<h1><?=title();?></h1>
<h4><?=getNavigation();?></h4>
<h2>Passord-generator</h2>
<?php
function genPwd($len = 8){
// Liste over støtta tegn. ÆØÅ osv. er ikke med fordi de blir to tegn og ikke funker lengre nede.
$characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
$numbers = "1234567890";
$special = "!#%&/()=?+*-:;";
$numCount = 0;
$speCount = 0;
$chaCount = 0;
$numChance = 30;
$specChance = 20;
$pwd = "";
// Løkke som går over hvert tegn av det nye passordet.
for($i = 0; $i < $len; $i++){
if($i==0){ $rand = 100; } // Sikre at første tegn er en bokstav.
else {
$rand = random_int(0,100);
}
// Hvis det tilfeldige tallet mellom 0 og 100 mindre enn $numChance, så blir dette tegnet et tall. Ellers hvis dette tallet er nest siste av passordet, så sjekkes det at det er med et tall. Hvis det ikke er et tall, skal det nå bli et tall.
if($rand < $numChance || $i == $len-2 && $numCount == 0){
$pwd .= $numbers[ random_int(1, strlen($numbers) )-1 ];
$numCount++;
}
// Hvis det tilfeldige tallet mellom 0 og 100 mindre enn $specChance, så blir dette tegnet et spesialtegn. Ellers hvis dette tegnet er siste i passordet, så sjekkes det at det er med et spesialtegn. Hvis det ikke er et spesialtegn, skal det nå bli et spesialtegn.
elseif($rand < $specChance+$numChance || $i == $len-1 && $speCount == 0){
$pwd .= $special[ random_int(1, strlen($special) )-1 ];
$speCount++;
}
// Ellers skriv en bokstav.
else {
$pwd .= $characters[ random_int(1, strlen($characters) )-1 ];
$chaCount++;
}
}
return $pwd;
}
$pwdLen = $_GET['pwdlen'] ?? 8;
?>
<p><strong><?=genPwd($pwdLen);?></strong></p>
<p><form><input type="number" name="pwdlen" value="<?=$pwdLen;?>" min="8" max="42"><input type="submit" value="Generer nytt..."></form></p>
</div>
</body>
</html>