Bu yazımızda HTML/CSS ve Javascript kullanarak rastgele şifre oluşturucu yapacağız. Önce ön izlemesini görelim.
Şimdide sırasıyla kodlarımızı görelim.
HTML :
<div class="container">
<h2>Şifre Oluşturucu</h2>
<div class="result-container">
<textarea id="PasswordResult"></textarea>
</div>
<div class="settings">
<div class="setting">
<label>Şifre uzunluğu</label>
<input type="number" id="Passwordlength" min="4" max="20" value="8" />
</div>
<div class="setting">
<label>Büyük harfler olsun</label>
<input type="checkbox" id="uppercase" checked />
</div>
<div class="setting">
<label>Küçük harfler olsun</label>
<input type="checkbox" id="lowercase" checked />
</div>
<div class="setting">
<label>Sayılar olsun</label>
<input type="checkbox" id="numbers" checked />
</div>
<div class="setting">
<label>Özel karakterler olsun</label>
<input type="checkbox" id="symbols" checked />
</div>
</div>
<div class="buttons">
<button class="btn btn-large" id="generateBtn">
<i class="fas fa-key"></i> Oluştur
</button>
<button class="btn" id="clipboardBtn">
<i class="far fa-clipboard"></i> Kopyala
</button>
</div>
</div>
CSS :
@import url("https://fonts.googleapis.com/css?family=Muli&display=swap");
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
background-color: var(--bg-color);
color: var(--color);
font-family: "Muli", sans-serif;
}
p {
margin: 5px 0;
}
h2 {
margin: 10px 0 20px;
text-align: center;
}
input[type="checkbox"] {
margin-right: 0;
}
.container {
padding: 20px;
width: 350px;
max-width: 100%;
background: var(--bg-color);
border: 12px solid var(--bg-color);
filter: var(--filter1);
margin: auto;
}
.result-container {
background-color: var(--bg-color);
border: 12px solid var(--bg-color);
filter: var(--filter2);
display: flex;
justify-content: flex-start;
align-items: center;
position: relative;
font-size: 18px;
letter-spacing: 1px;
height: 60px;
width: 100%;
margin-bottom: 35px;
}
textarea {
background: none;
border: none;
color: var(--color);
font-size: 20px;
margin-top: auto;
outline: none;
resize: none;
}
.result-container .btn {
font-size: 20px;
position: absolute;
top: 5px;
right: 5px;
height: 40px;
width: 40px;
}
.buttons {
display: flex;
}
.btn {
width: 50%;
border: none;
color: var(--color);
cursor: pointer;
font-size: 16px;
padding: 8px 12px;
margin: 14px 5px 7px 5px;
background-color: var(--bg-color);
filter: var(--filter2);
}
.btn:hover {
filter: var(--filter3);
transition: 0.3s ease-in-out;
}
.setting {
display: flex;
justify-content: space-between;
align-items: center;
margin: 15px 0;
}
@media screen and (max-width: 400px) {
.result-container {
font-size: 14px;
}
}
Javascript :
function getRandomLower() {
return String.fromCharCode(Math.floor(Math.random() * 26) + 97);
}
function getRandomUpper() {
return String.fromCharCode(Math.floor(Math.random() * 26) + 65);
}
function getRandomNumber() {
return +String.fromCharCode(Math.floor(Math.random() * 10) + 48);
}
function getRandomSymbol() {
const symbols = "!@#$%^&*(){}[]=<>/,.";
return symbols[Math.floor(Math.random() * symbols.length)];
}
const randomFunc = {
lower: getRandomLower,
upper: getRandomUpper,
number: getRandomNumber,
symbol: getRandomSymbol,
};
const generate = document.getElementById("generateBtn");
generate.addEventListener("click", () => {
const length = document.getElementById("Passwordlength").value;
const hasUpper = document.getElementById("uppercase").checked;
const hasLower = document.getElementById("lowercase").checked;
const hasNumber = document.getElementById("numbers").checked;
const hasSymbol = document.getElementById("symbols").checked;
const result = document.getElementById("PasswordResult");
result.innerText = generatePassword(
hasLower,
hasUpper,
hasNumber,
hasSymbol,
length
);
});
function generatePassword(lower, upper, number, symbol, length) {
let generatedPassword = "";
const typesCount = lower + upper + number + symbol;
const typesArr = [{ lower }, { upper }, { number }, { symbol }].filter(
(item) => Object.values(item)[0]
);
for (let i = 0; i < length; i += typesCount) {
typesArr.forEach((type) => {
const funcName = Object.keys(type)[0];
generatedPassword += randomFunc[funcName]();
});
}
const finalPassword = generatedPassword.slice(0, length);
return finalPassword;
}
let button = document.getElementById("clipboardBtn");
button.addEventListener("click", (e) => {
e.preventDefault();
document.execCommand(
"copy",
false,
document.getElementById("PasswordResult").select()
);
});
Bu yazımızda HTML/CSS ve Javascript kullanarak rastgele şifre oluşturucu yaptık. Diğer HTML ve CSS örneklerini görmek için buraya, Javascript örneklerini görmek için buraya tıklayabilirsiniz.