Witam.
Nie ukrywam, że posługuję się sesjami zaledwie od paru godzin a całym php chyba drugi dzień. Moim celem jest rejestracja w dwóch krokach. W pierwszym pobieramy login oraz hasło, i wysyłamy je do sesji a drugi krok ma odczytać dane z kroku pierwszego, pobrać parę innych zmiennych i utworzyć wpis w bazie danych test w tabeli user. Konfiguracja połączenia bazy danych jak łatwo się domyślić jest zawarta w conn.php. Dodatkowo skrypt sprawdza czy użytkownik jest zalogowany, jeśli tak, to nie wyświetlają mu się okna do tworzenia konta.
<?php
require('conn.php');
include("head.php");
if (isset($_SESSION['user_id']) and
isset($_SESSION['login'])) {
?>
<h1>
<?
echo "Nie możesz utworzyć nowego konta, ponieważ jeste? zalogowany jako: "; ?>
<form action="logout.php" method="post">
<input type="submit" value="Wyloguj" />
</form>
<h1/>
<?
}
else
{
?>
<h1>
<?
if (isset($_POST['konto']) and
isset($_POST['password']) and
isset($_POST['password2'])) {
if ($_POST['password']==$_POST['password2'])
{
$ile =mysql_query("SELECT * FROM `user` WHERE login = '$konto'"); if ($ile==0)
{
$zapytanie= ($_SESSION['krok_login']=$konto and $_SESSION['krok_pass']=$password);
}
else
{
echo("Taki użytkownik już istnieje, kliknij wstecz aby zarejestrować się ponownie."); }
}
else echo ("Podane hasła nie zgadzaj? się!"); }
elseif (isset($_SESSION['krok_login']) and
isset($_SESSION['krok_pass'])) {
if (isset($_POST['imie']) and
isset($_POST['plec']) and
isset($_POST['wioska']) and
isset($_POST['natura'])) {
$ile2 =mysql_query("SELECT * FROM `user` WHERE imie = '$imie'"); if ($ile2==0)
{
$zapytanie2= "INSERT INTO user (login,password,imie,plec,wioska,natura) VALUES('$krok_login','$krok_pass','$imie',$plec','$wioska','$natura')";
echo('Konto '.$konto.' o loginie '.login
.' zostalo pomy?lnie kurwa utworzone!'); }
else
{
echo("To imię jest w użyciu."); }
}
else
{
?>
<h1>Dalsza cze?ć rejestracji.</h1>
<form action="register2.php" method="post">
<table style="text-align: right; width: 250px;">
<tr>
<td>
Imię:
</td>
<td>
<input name="imie" type="text" value="" />
</td>
</tr>
<tr>
<td>
Płeć:
</td>
<td>
<input type="radio" name="plec" value="facet" checked="checked" />Mężczyzna
<input type="radio" name="plec" value="baba" />Kobieta
</td>
</tr>
<tr>
<td>
Wioska:
</td>
<td>
<select name="wioska">
<option value="konoha">Konoha-Gakure</option>
<option value="suna">Suna-Gakure</option>
<option value="kiri">Kiri-Gakure</option>
<option value="kumo">Kumo-Gakure</option>
<option value="iwa">Iwa-Gakure</option>
<option value="oto">Oto-Gakure</option>
</select>
</td>
</tr>
<tr>
<td>
Natura chakry:
</td>
<td>
<select name="natura">
<option value="wiatr">Wiatr</option>
<option value="woda">Woda</option>
<option value="ogien">Ogień</option>
<option value="ziemia">Ziemia</option>
<option value="blysk">Błyskawica</option>
</select>
</td>
</tr>
</table>
<table style="text-align: center; width: 250px;">
<tr>
<td>
<input type="submit" value="Zarejestruj" />
</td>
<tr>
</table>
</form>
<?
}
}
else
{
?>
Dodaj nowego użytkownika.</h1>
<form action="register2.php" method="post">
<table style="text-align: right; width: 250px;">
<tr>
<td>
Nazwa konta:
</td>
<td>
<input name="konto" type="text" value="" />
</td>
</tr>
<tr>
<td>
Hasło:
</td>
<td>
<input name="password" type="password" value="" />
</td>
</tr>
<tr>
<td>
Powtórz hasło:
</td>
<td>
<input name="password2" type="password" value="" />
</td>
</tr>
</table>
<table style="text-align: center; width: 250px;">
<tr>
<td>
<input type="submit" value="Zarejestruj" />
</td>
<tr>
</table>
</form>
<?
}
}
include("foot.php");
?>
Problemy są dwa.
Pierwszym jest to, że po wprowadzeniu "pierwszych" danych (loginu i hasła), strona pozostaje pusta, i muszę ją odświeżyć, aby przejść do drugiego kroku.
Drugim problemem jest to, że po wszystkim, skrypt nie tworzy żadnych wpisów w bazie danych, wyświetla się jedynie napis "Wystąpił błąd". Mniemam, że błąd znajduje się w linijkach 48-49. Proszę o naprawienie skryptu, ewentualnie nakierowanie mnie na dobrą drogę poprzez wskazanie mi funkcji jaką muszę użyć.
Ten post edytował greenghost 19.02.2010, 00:47:44