Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dodawanie nowego użytkownika oraz zasobów w innej tabeli
Forum PHP.pl > Forum > PHP
Majkeltaker
Witajcie, piszę aplikację zaliczeniową na studia. Wymyśliłem sobie, ze będzie to apka obsługująca jakąś grę. Możliwosć logowania i rejestrowania sie smile.gif
I chciałem zrobić coś takiego w formularzu rejestracji: że jeśli użytkownik się zarejestruje na start dostanie jakieś zasoby surowców. I przy okazji tego punktu chcę korzystać z dwóch tabel: użytkownicy gdzie dodaje mi się login, hasło, mail, serwer oraz tabeli zasoby_użytkownika. Udało mi się okodować dodwanie użytkownika do bazy ale nie wiem jak równocześnie dodać mu surowce. Może wy mi pomożecie?
O to kod z formularza rejestracji:
<?php

session_start();

if (isset($_POST['email']))
{
//Udana walidacja
$ok=true;
//sprawdzenie nicka i długości
$nick=$_POST['nick'];

if((strlen($nick)<3||(strlen($nick)>20)))
{
$ok=false;
$_SESSION['error_nick']="Nick powinien posiadać od 3 do 20 znaków";
}
//sprawdzanie hasła
$haslo = $_POST['haslo'];
$haslo1 = $_POST['haslo1'];

if(strlen($haslo)<8)
{
$ok=false;
$_SESSION['error_haslo']="Hasło powinno mieć minimum 8 znaków";
}

if($haslo!=$haslo1)
{
$ok=false;
$_SESSION['error_haslo']="Hasła nie są identyczne";
}

$haslo_md5=md5($_POST['haslo']);
//sprawdzanie e-maila
$email=$_POST['email'];
$emailspr= filter_var($email,FILTER_SANITIZE_EMAIL);

if(filter_var($emailspr,FILTER_VALIDATE_EMAIL)==false || ($emailspr!=$email))
{
$ok=false;
$S_SESSION['error_email']="Podaj poprawny adres e-mail,np. pawel.hadzinski@gmail.com";

}

$serwer=$_POST['serwer'];

require_once "polaczenie.php";
mysqli_report(MYSQLI_REPORT_STRICT);

try
{
$polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
if ($polaczenie->connect_errno!=0)
{
throw new Exception(mysqli_connect_errno());
}
else
{



if ($ok==true)
{


if ($polaczenie->query("INSERT INTO uzytkownicy VALUES (NULL, '$nick', '$haslo_md5', '$email', 7 , $serwer )"))
{
$_SESSION['udanarejestracja']=true;
header('Location: powitanie.php');
}
else
{
throw new Exception($polaczenie->error);
}

}

$polaczenie->close();
}

}
catch(Exception $e)
{
echo '<span style="color:red;">Błąd serwera! Przepraszamy za niedogodności i prosimy o rejestrację w innym terminie!</span>';

}

}


?>

<!DOCTYPE HTML>
<html lang="pl">
<head>
<meta charset="utf-8"/>
<title>projekt- zakładanie konta</title>
<style>
.error
{
color:red;
margin-top: 20px;
margin-bottom 20px;
}
</style>
</head>

<body>
<form method="post">

Nick: <br/> <input type="text" name="nick" /><br/>

<?php
if(isset($_SESSION['error_nick']))
{
echo'<div class="error">'.$_SESSION['error_nick'].'</div>';
unset($_SESSION['error_nick']);
}
?>
Hasło: <br/> <input type="password" name="haslo" /><br/>

<?php
if(isset($_SESSION['error_haslo']))
{
echo'<div class="error">'.$_SESSION['error_haslo'].'</div>';
unset($_SESSION['error_haslo']);
}
?>
Powtórz Hasło: <br/> <input type="password" name="haslo1" /><br/>
E-mail: <br/> <input type="text" name="email" /><br/>

<?php
if(isset($S_SESSION['error_email']))
{
echo'<div class="error">'.$S_SESSION['error_email'].'</div>';
unset($S_SESSION['error_email']);
}
?>
Serwer: <br/> <input type="text" name="serwer" /><br/>

<br></br>

<input type="submit" value="Zarejestruj" />






</form>

</body>
</html>

dodanie rekordu następuje w tej instrukcji:
if ($ok==true)
{


if ($polaczenie->query("INSERT INTO uzytkownicy VALUES (NULL, '$nick', '$haslo_md5', '$email', 7 , $serwer )"))
{
$_SESSION['udanarejestracja']=true;
header('Location: powitanie.php');
}
else
{
throw new Exception($polaczenie->error);
}

}

i domyślam się, że dodanie rekordu do drugiej bazy powinno odbyć się między zmienną sesyjną a headerem ale nie wiem jak to okodować. Proszę o pomoc.


Nikt nie pomoże?
Wazniak96
1. Nie ten dział. Zdecydowanie przedszkole.
2. Używaj tagów PHP żeby nam podświetlało składnie bo tak to ni w ząb i się nie dziwię, że nikt nie pomaga.
3. Twoje studia to... ogrodnictwo? Jestem studentem pierwszego roku Informatyki i nas już od początku uczą
->Wcięcia
->Logicznego nazywania zmiennych
->żeby choć trochę kod był bardziej czytelny
->żeby nie mieszać PHP z HTML (nam akurat dowalili od razu MVC)
->że md5 nie nadaję się do hashowania hasła


Swoją drogą nie chce mi się czytać nawet tego kodu bo to droga przez męki w każdym razie co mogę wywnioskować po pytaniu to dodaj rekord do drugiej tabeli od razu po dodaniu użytkownika. Musisz zbudować relację tabel na podstawie id użytkownika.

Tak od siebie jeszcze dodam.
-Co prawda my mieliśmy MongoDB ale jakoś mi się nie widzi żeby oddawać projekt z Mysqli zamiast PDO.
-Dlaczego wkładasz błędy do sesji?

Jak na moje oko to bym przepisał ten kod od nowa.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.