Zwei Sessions übergeben, nur eine wird angenommen?

Moin,

ich möchte zwei Sessions von meiner signup.php einer anderen Seite übergeben. Nämlich einen generierten Benutzernamen und ein zufällig generiertes Passwort. Nun wird mir allerdings auf meiner anderen Seite nur der Name ausgegeben, das Feld für das Passwort bleibt leer. Weiß jemand zufälligerweise, wieso?

Code-Snippet der Seite (PHP):

if ($_GET['signup'] === 'success') {
  echo '<p>Der Benutzer wurde erfolgreich erstellt.</p>',
    '<p class="am-modal-showaccount-content-minor">Benutzername:</p>',
    '<input type="text" value="', $_SESSION['addedname'], '" readonly><br>',
    '<p class="am-modal-showaccount-content-minor">Passwort:</p>',
    '<input type="text" value="', $_SESSION['addedpassword'], '" readonly><br>';
}
else {
  echo 'Unbekannter Fehler aufgetreten.';
}

Code-Snippet der signup-Datei (PHP):

$name = $first . '.' . $last;
$name = mb_strtolower($name, 'UTF-8');

function replaceSpecialCharacters($name) {
  $replaceSpecialCharacters = array('ä' => 'ae', [usw...]);
  $name = str_replace(
    array_keys($replaceSpecialCharacters), 
    array_values($replaceSpecialCharacters),
    $name);

  return $name;
}

$name = replaceSpecialCharacters($name);

function generateRandomPassword($passwordRandom) {
  $characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!?~@#-_+<>[]{}';
  return substr(str_shuffle($characters), 0, $passwordRandom);
}

echo generateRandomPassword(8);

session_start();
$_SESSION['addedname'] = $name;
$_SESSION['addedpassword'] = $passwordRandom;
$passwordHash = password_hash($passwordRandom, PASSWORD_DEFAULT);

$sql = "INSERT INTO users (user_first, user_last, user_name, user_password, user_email) VALUES ('$first', '$last', '$name', '$passwordHash', '$email');"; $result = mysqli_query($database_connect, $sql);

$_SESSION['addedname'] = $name;
$_SESSION['addedpassword'] = $passwordRandom;
$passwordHash = password_hash($passwordRandom, PASSWORD_DEFAULT);
                
$sql = "INSERT INTO users (user_first, user_last, user_name, user_password, user_email) VALUES ('$first', '$last', '$name', '$passwordHash', '$email');";
$result = mysqli_query($database_connect, $sql);

LG

Website, HTML, Webseite, programmieren, html5, PHP, php5
2 Antworten
Zwei Modals "in Reihe schalten" - wie geht's richtig?

Moin,

für ein aktuelles Projekt möchte ich auf einen vom Nutzer über den Signup-Button abgesendeten Modal mit einem weiteren Modal reagieren. Allerdings poppt dieses nach Absenden des ersten Modals nur für einen Bruchteil einer Sekunde auf und schließt sich im Anschluss wieder. Hat jemand eine Idee, wie ich das beheben kann?

html-Snippet:

<div>
	<a class="am-button"><img src="img"></a>
	<a class="am-button" id="modalAddAccountOpen"><img src="img"></a>
	<div class="am-modal-addaccount" id="modalAddAccount">
		<div class="am-modal-addaccount-content">
			<span class="am-modal-addaccount-close" id="modalAddAccountClose" title="Verwerfen">×</span>
			<p>Benutzer hinzufügen</p>
			<form action="inc/signup.inc.php" method="POST">
				<input class="am-modal-addaccount-input" type="text" name="signup-first" placeholder="Vorname">
				<input class="am-modal-addaccount-input" type="text" name="signup-last" placeholder="Nachname">
				<input class="am-modal-addaccount-input" type="text" name="signup-email" placeholder="E-Mail-Adresse">
				<input class="button" type="submit" name="signup-submit" id="modalShowAccountOpen" value="Hinzufügen">
			</form>
		</div>
	</div>
	<script type="text/javascript" src="js/accountmanagement/modalAddAccount.js"></script>
	<div class="am-modal-showaccount" id="modalShowAccount">
		<div class="am-modal-showaccount-content">
			<span class="am-modal-showaccount-close" id="modalShowAccountClose" title="Schließen">×</span>
			<p>Test</p>
			<form>
				<input class="button" type="submit" id="modalShowAccountClose" value="Schließen">
			</form>
		</div>
	</div>
	<script type="text/javascript" src="js/accountmanagement/modalShowAccount.js"></script>
</div>

Der relevante CSS-Snippet:

.am-modal-addaccount{
	position: fixed;
	display: none;
	z-index: 3;
}

.am-modal-showaccount{
	position: fixed;
	display: none;
	z-index: 3;
}

Der js-Code:

var modalAddAccountOpen = document.getElementById('modalAddAccountOpen');
var modalAddAccount = document.getElementById('modalAddAccount');
var modalAddAccountClose = document.getElementById('modalAddAccountClose');

modalAddAccountOpen.onclick = function(){ modalAddAccount.style.display = "block"; }

modalAddAccountClose.onclick = function(){ modalAddAccount.style.display = "none"; }

var modalShowAccountOpen = document.getElementById('modalShowAccountOpen'); var modalShowAccount = document.getElementById('modalShowAccount'); var modalShowAccountClose = document.getElementById('modalShowAccountClose');

modalShowAccountOpen.onclick = function(){ modalShowAccount.style.display = "block"; }

modalShowAccountClose.onclick = function(){
	modalShowAccount.style.display = "none";
}

LG

Website, HTML, programmieren, CSS, JavaScript, JS, html5, CSS3
1 Antwort