PHP :: Aufgabe #61

2 Lösungen Lösungen öffentlich

Passwortgenerator mit Parametern

Anfänger - PHP von pocki - 27.11.2014 um 18:11 Uhr
Erstelle ein Programm/Funktion welche/s ein zufälliges Passwort erzeugt.
Als Parameter soll die Länge sowie die Art der darin vorkommenden Zeichen übergeben werden können.
Zur Auswahl sollen stehen: Kleinbuchstaben, Großbuchstaben, Zahlen und Sonderzeichen.
Jede beliebige Kombination der Parameter soll möglich sein.

Lösungen:

vote_ok
von Jinnai (340 Punkte) - 22.11.2015 um 01:09 Uhr
Anmerkung: Den switch-Block könnte man genauso auch mit if-elseif Lösen.

Quellcode ausblenden PHP-Code
<?php
	function gen_pw($laenge, $art) {
		function generiere($laenge, $chars) {
			$passwd = '';
				for($i = 0; $i < $laenge; $i++) {
					$passwd .= $chars{mt_rand(0,strlen($chars)-1)};
				}
			echo $passwd;
		}
		
		switch($art) {
			case 'p101':
				$chars = "abcdefghijkmnpqrstuvwxyz";
				generiere($laenge, $chars);
				break;
			case 'p102':
				$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
				generiere($laenge, $chars);
				break;
			case 'p103':
				$chars = "0123456789";
				generiere($laenge, $chars);
				break;
			case 'p104':
				$chars = "@+*/[]}{%&\\";
				generiere($laenge, $chars);
				break;
			case 'p105':
				$chars = "abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
				generiere($laenge, $chars);
				break;
			case 'p106':
				$chars = "abcdefghijkmnpqrstuvwxyz0123456789";
				generiere($laenge, $chars);
				break;
			case 'p107':
				$chars = "abcdefghijkmnpqrstuvwxyz@+*/[]}{%&\\";
				generiere($laenge, $chars);
				break;
			case 'p108':
				$chars = "abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
				generiere($laenge, $chars);
				break;
			case 'p109':
				$chars = "abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@+*/[]}{%&\\";
				generiere($laenge, $chars);
				break;
			case 'p110':
				$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
				generiere($laenge, $chars);
				break;
			case 'p111':
				$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ@+*/[]}{%&\\";
				generiere($laenge, $chars);
				break;
			case 'p112':
				$chars = "0123456789@+*/[]}{%&\\";
				generiere($laenge, $chars);
				break;
			default:
				echo 'Es ist ein Fehler aufgetreten.';
		}
	}
	
	if(isset($_POST['submit'])) {
		if(isset($_POST['laenge']) && is_numeric($_POST['laenge'])) {
			if(isset($_POST['pwtype']) && $_POST['pwtype'] != 'p100') {
				gen_pw($_POST['laenge'], $_POST['pwtype']);
			}else {
				echo 'Bitte wähle die Art des zu generierenden Passworts aus.';
			}
		}else {
			echo 'Bitte trage eine gültige länge ein.';
		}
	}
?>


Quellcode ausblenden HTML-Code

<html>
	<form action="pwgenerator.php" method="POST">
		Länge des Passworts: <input type="text" name="laenge"><br />
		Art des Passworts: 	<select name="pwtype" size="1">
								<option value="p100"></option>
								<option value="p101">Kleinbuchstaben</option>
								<option value="p102">Großbuchstaben</option>
								<option value="p103">Zahlen</option>
								<option value="p104">Sonderzeichen</option>
								<option value="p105">Kleinbuchstaben & Großbuchstaben</option>
								<option value="p106">Kleinbuchstaben & Zahlen</option>
								<option value="p107">Kleinbuchstaben & Sonderzeichen</option>
								<option value="p108">Kleinbuchstaben & Großbuchstaben & Zahlen</option>
								<option value="p109">Kleinbuchstaben & Großbuchstaben & Sonderzeichen</option>
								<option value="p110">Großbuchstaben & Zahlen</option>
								<option value="p111">Großbuchstaben & Sonderzeichen</option>
								<option value="p112">Zaehlen & Sonderzeichen</option>
							</select><br />
		<input type="submit" name="submit" value="Generieren">
	</form>
</html>
vote_ok
von paddlboot (3970 Punkte) - 12.08.2019 um 11:31 Uhr
Quellcode ausblenden PHP-Code
<?php
//beliebige Parameter angeben
$laenge = 5;
$kleinbuchstaben = true;
$großbuchstaben = true;
$zahlen = true;
$sonderzeichen = true;

echo 'Länge: '.$laenge;
echo '<br/>Kleinbuchstaben? '.$kleinbuchstaben;
echo '<br/>Großbuchstaben? '.$großbuchstaben;
echo '<br/>Zahlen? '.$zahlen;
echo '<br/>Sonderzeichen'.$sonderzeichen;

$alphabet = '';

if($kleinbuchstaben == true)
{
	$alphabet .= 'abcdefghijklmnopqrstuvwxyz';
}

if($großbuchstaben == true)
{
	$alphabet .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
}

if($zahlen == true)
{
	$alphabet .= '1234567890';
}

if($sonderzeichen == true)
{
	$alphabet .= '!"§$%&/()=?{[]}\+*~#-_.,:;<>|^°';
}


$passwort = '';

for($i = 0; $i < $laenge; $i++)
{
	$zufall = rand(0, strlen($alphabet) - 1);
	$passwort .= $alphabet[$zufall];
}


echo '<br/><br/>erzeugtes Passwort: '.$passwort;


?>
2116366

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.