Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Zbyt szybkie działanie kodu
Forum PHP.pl > Forum > PHP
impimp94
Witam!
Zrobiłem skrypt na rejestracje. Działa wszytko wporządku, ponieważ dodają się konta.
Natomiast bardzo denerwują mnie napisy(np.: Istnieje użytkownik o tkaiej nazwie) pojawiają się zanim cokolwiek się wpisze.
Z góry dziękuję za pomoc!
Oto kod
  1. <form method="POST" name="war" action="register.php"><BR><p style="color:gold;">Login: <input type="text" name="login">
  2.  
  3. <BR>Hasło: <input type="password" name="has">
  4.  
  5. <BR>Powtórz hasło: <input type="password" name="phas">
  6.  
  7. <BR>e-mail: <input type="text" name="em"></p>
  8.  
  9. <BR><input value="Wyślij" type="submit" name="send"><BR></form><BR><?php<BR>$log = htmlspecialchars($_POST['login']);<BR>$has = htmlspecialchars($_POST['has']);<BR>$phas = htmlspecialchars($_POST['phas']);<BR>$em = htmlspecialchars($_POST['em']);<BR>$ip = $_SERVER['REMOTE_ADDR'];</P> <P>if ($has !== $phas) {<BR> echo "<p style='color: red; font-size: 20pt';>Hasła nie pasują do siebie</p>";<BR>        exit;<BR>}<BR>if (empty($log) || empty($has) || empty($phas) || empty($em)) {<BR> echo "<p style='color: red; font-size: 20pt';>Prosze wypełnić wszystkie pola</p>";<BR> exit;<BR>}$baza = mysql_connect("None","None","None") or die("Nie udało się połšczyć z bazš");</P> <P>mysql_select_db("None") or die("Nie udało się wybrać bazy");<BR> <BR>$sql = "select * from users where login='$log'";<BR>$sql1 = mysql_query($sql) or die("Nie udało sie wysłać danych 1");<BR>if (mysql_num_rows($sql1)>0) {<BR> echo "<p style='color: red; font-size: 20pt';>Istniej użytkownik o takiej nazwie</p>";<BR> exit;<BR>}</P> <P><BR>$sql = "INSERT INTO `users` (`login`, `haslo`,`mail`, `ip` ) VALUES ('$log', md5(sha1('$has')), '$em', '$ip')";</P> <P> </P> <P>$sql2 = mysql_query($sql) or die("Nie udało się wysłać danych");<BR>if ($sql2 == true) {<BR> echo "<p style='color: gold; font-size: 14pt';>Dodano konto</p>";<BR>}<BR>mysql_close($baza);<BR>?><BR>
Spawnm
daj input type=hidden name=cos
i całe sprawdzanie daj w
  1. <?php
  2. if($_POST['cos']){
  3. //spr itp
  4. }
  5. ?>


I używaj bbcode.
Zosiek
Jeśli dobrze zrozumiałem zanim wpiszesz w pole Login cokolwiek wyświetla się "Użytkownik istnieje". Spróbuj zrobić dwa osobne pliki.
W jednym formularz a w drugim skrypt php odwołujący się do mysql. Jeśli będzie użytkownik to niech wyświetla że istnieje i wracał na stronę formularza. Jeśli nie to przepuszczał i pokazywał okienko informujące o poprawnym założeniu konta
Rejestracja (.html, .php, .htm)
  1. <form method="POST" name="war" action="register.php"><BR><p style="color:gold;">Login: <input type="text" name="login">
  2.  
  3. <BR>Hasło: <input type="password" name="has">
  4.  
  5. <BR>Powtórz hasło: <input type="password" name="phas">
  6.  
  7. <BR>e-mail: <input type="text" name="em"></p>
  8.  
  9. <BR><input value="Wyślij" type="submit" name="send"><BR></form>


register.php
  1. <BR><?php<BR>$log = htmlspecialchars($_POST['login']);<BR>$has = htmlspecialchars($_POST['has']);<BR>$phas = htmlspecialchars($_POST['phas']);<BR>$em = htmlspecialchars($_POST['em']);<BR>$ip = $_SERVER['REMOTE_ADDR'];</P> <P>if ($has !== $phas) {<BR> echo "<p style='color: red; font-size: 20pt';>Hasła nie pasują do siebie</p>";<BR>        exit;<BR>}<BR>if (empty($log) || empty($has) || empty($phas) || empty($em)) {<BR> echo "<p style='color: red; font-size: 20pt';>Prosze wypełnić wszystkie pola</p>";<BR> exit;<BR>}$baza = mysql_connect("None","None","None") or die("Nie udało się połšczyć z bazš");</P> <P>mysql_select_db("None") or die("Nie udało się wybrać bazy");<BR> <BR>$sql = "select * from users where login='$log'";<BR>$sql1 = mysql_query($sql) or die("Nie udało sie wysłać danych 1");<BR>if (mysql_num_rows($sql1)>0) {<BR>
  2. echo '<form method="POST" name="war" action="register.php">'
  3. .'<p style="color:gold;">Login: <input type="text" name="login" value="'.$login.'"> <p style='color: red; font-size: 20pt';>Istniej użytkownik o takiej nazwie</p>'
  4. .'Hasło: <input type="password" name="has">'
  5. .'<BR>Powtórz hasło: <input type="password" name="phas">'
  6. .'<BR>e-mail: <input type="text" name="em" value="'.$em.'"></p>'
  7. .'<input value="Wyślij" type="submit" name="send">'.'</form>';
  8. <BR> exit;<BR>}</P> <P><BR>$sql = "INSERT INTO `users` (`login`, `haslo`,`mail`, `ip` ) VALUES ('$log', md5(sha1('$has')), '$em', '$ip')";</P> <P> </P> <P>$sql2 = mysql_query($sql) or die("Nie udało się wysłać danych");<BR>if ($sql2 == true) {<BR> echo "<p style='color: gold; font-size: 14pt';>Dodano konto</p>";<BR>}<BR>mysql_close($baza);<BR>?><BR>
impimp94
Spawnm
Próbowałem tak jak mówiłeś, ale nie zadziałało.



Zosiek
A jak zrobić aby np.: potwierdzenie o stworzeniu konta wracało na strone formularza? worriedsmiley.gif
PawelC
Cytat
A jak zrobić aby np.: potwierdzenie o stworzeniu konta wracało na strone formularza

np przy pomocy header: http://pl.php.net/manual/pl/function.header.php
  1. <?php
  2. header('Location: formularz-logowania.php');
  3. ?>



// Pomógł++;
// ayeo
impimp94
Dzięki guitar.gif guitar.gif guitar.gif ,
ale dalej nie do końca rozumiem działanie tej funkcji.
Jeżli tu mam np.: formularz pod nazwą rejestruj.php
  1. <form method="POST" action="rejestruj1.php">
  2. <!-- Formularz rejestracyjny-->
  3. </form>

A tu mam plik rejestruj1.php
  1. <?php
  2. header('Location: rejestruj.php');
  3. [color="#000000"]// Sprawdzenie poprawności formularzy
  4. [/color]// I teraz czy funckja(header) wyśle odpowiedź na strone rejestruj.php np.: z "Dodano konto" lub "Hasła nie pasują do siebie"
  5. // Jeżeli wszystko jest w porządku dodaj konto
  6. ?>
PawelC
pokaże Ci na jakimś prostym przykładzie, gdzie $liczba=5, jeżeli $liczba będzie równa 5 to pokaże komunikat, jeżeli będzie większa, bądź mniejsza to przeniesie na podstronę error.php
  1. <?
  2. $liczba=$_POST['liczba'];
  3. if($liczba=='5'){
  4. //jeżeli liczba = 5
  5. echo "podana liczba jest równa 5";
  6. }
  7. else{
  8. //jeżeli liczba jest większa, bądź mniejsza od 5
  9. header('Location: error.php');
  10. }
  11. ?>

Teraz rozumiesz, o co chodzi?
impimp94
Tak, wielkie dzięki czarodziej.gif

A mam jeszcze jedno pytanie.
Czy widzicie tu błąd( w tym kodzie)?
Kod PHP
<?php
32. if (!eregi("([a-zA-Z0-9_-]+@([a-zA-Z0-9_-]+\\.)+[a-zA-Z0-9_-]+)", $em) {
33. echo "<p style='color: red; font-size: 20pt';>E-mail jest zapisany w niepoprawnej formie</p>";
34. echo "<a href='http://www.travel.boo.pl/register.php'><p style='color:red;'>Porwrót</p></a>";
35. exit;
}
?>
Wyskakuje mi taki błąd
Parse error: syntax error, unexpected '{' in /home/accounts_i/impimp94/public_html/register1.php on line 32
Gelio
Na 32 linii przed { dopisz ).

Pozdrawiam,
Gelio
megawebmaster
I nie używaj ereg* tylko preg*. Są o wiele szybsze.
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.