Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Błąd w skrypcie
Forum PHP.pl > Forum > Przedszkole
Diablico14
Witam serdecznie.
Otóż mam taki problem.Chciałem zrobić własne forum i podczas rejestracji kiedy serwer wysyła mail do użytkownika a on w niego kilka pojawia się na stronie następujący błąd
Cytat
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/sites/yoyo.pl/d/i/diablico/weryfikowanie.php on line 10
Weryfikacja konta nie była możliwa.{W5_/{rtZ6m9l}.{

Kod odpowiedzialny za rejestrowanie:
Kod
<?php

session_start();

require("konfiguracja.php");

$db = mysql_connect($dbhost, $dbuser, $dbpassword);
mysql_select_db($dbdatabase, $db);

if($_POST['submit']) {
     if($_POST['password1'] == $_POST['password2']) {
         $checksql = "SELECT * FROM uzytkownicy WHERE nazwa_uzytkownika = '" . $_POST['nazwa_uzytkownika'] . "';";
         $checkresult = mysql_query($checksql);
         $checknumrows = mysql_num_rows($checkresult);
        
         if($checknumrows == 1) {
             header("Location: " . $config_basedir . "rejestrowanie.php?error=taken");    
         }
         else {
             for($i = 0; $i < 16; $i++) {
                 $randomstring .= chr(mt_rand(32,126));
             }

             $verifyurl = "http:www.diablico.yoyo.pl/weryfikowanie.php";
             $verifystring = urlencode($randomstring);
             $verifyemail = urlencode($_POST['email']);
             $validusername = $_POST['nazwa_uzytkownika'];

             $sql = "INSERT INTO uzytkownicy(nazwa_uzytkownika, haslo, email, lancuch_weryfikacji, aktywne) VALUES('"
                 . $_POST['nazwa_uzytkownika']
                 . "', '" . $_POST['password1']
                 . "', '" . $_POST['email']
                 . "', '" . addslashes($randomstring)
                 . "', 0);";
             echo $sql;
             mysql_query($sql);
                                                
$mail_body=<<<_MAIL_

Witaj $validusername,

W celu weryfikacji nowego konta należy kliknąć poniższy odnośnik:

$verifyurl?email=$verifyemail&verify=$verifystring

_MAIL_;
            
             mail($_POST['email'], $config_forumsname . " Weryfikacja konta użytkownika", $mail_body);

             require("naglowek.php");
             echo "Odnośnik wysłano pod podany adres e-mail. W celu weryfikacji konta należy kliknąć odnośnik zawarty w wiadomości pocztowej.";            
         }
     }
     else {
         header("Location: " . $config_basedir . "rejestrowanie.php?error=pass");
     }
}
else {
     require("naglowek.php");
    
     switch($_GET['error']) {
         case "pass":
             echo "Brak zgodności haseł!";
         break;

         case "taken":
             echo "Takie konto już istnieje. Proszę podać inne.";
         break;

         case "no":
             echo "Niepoprawne dane logowania!";
         break;

     }
?>
     <h2>Rejestrowanie</h2>
     W celu zarejestrowania się na forum <?php echo $config_forumsname; ?> należy wypełnić poniższy formularz.
     <form action="<?php echo $SCRIPT_NAME ?>" method="POST">
     <table>
     <tr>
         <td>Nazwa użytkownika</td>
         <td><input type="text" name="nazwa_uzytkownika"></td>
     </tr>
     <tr>
         <td>Hasło</td>
         <td><input type="password" name="password1"></td>
     </tr>
     <tr>
         <td>Hasło (ponownie)</td>
         <td><input type="password" name="password2"></td>
     </tr>
     <tr>
         <td>E-mail</td>
         <td><input type="text" name="email"></td>
     </tr>
     <tr>
         <td></td>
         <td><input type="submit" name="submit" value="Zarejestruj się!"></td>
     </tr>
     </table>
     </form>

<?php
}

require("stopka.php");

?>

Kod odpowiedzialny za weryfikowanie:
Kod
<?php

require("naglowek.php");

$verifystring = urldecode($_GET['verify']);
$verifyemail = urldecode($_GET['email']);

$sql = "SELECT id FROM uzytkownicy WHERE lancuch_weryfikacji = '" . $verifystring . "' AND email = '" . $verifyemail . "';";
$result = mysql_query($sql);
$numrows = mysql_num_rows($result);

if($numrows == 1) {
     $row = mysql_fetch_assoc($result);
    
     $sql = "UPDATE uzytkownicy SET aktywne = 1 WHERE id = " . $row['id'];
     $result = mysql_query($sql);

     echo "Konto zostało sprawdzone. Można się <a href='logowanie.php'>zalogować</a>";
}
else {
     echo "Weryfikacja konta nie była możliwa.";
}

echo $verifystring;

require("stopka.php");

?>

Za odpowiedzi z góry dziękuje. dry.gif sciana.gif
Daimos
uzywaj bbcode lepiej, zeby kolorowalo skladnie winksmiley.jpg
w weryfikacji popraw:
  1. <?php
  2. $result = mysql_query($sql);
  3. ?>

na
  1. <?php
  2. $result = mysql_query($sql) or die(mysql_error());
  3. ?>

to zobaczysz blad
Spawnm
$verifystring = urldecode($_GET['verify']);
$verifyemail = urldecode($_GET['email']);

chyba gety są złe, daj echo $sql.
i zobacz czy są puste , może zwykła literówka .


A z innej beczki to filtruj dane tongue.gif
mysql_real_escape_string" title="Zobacz w manualu PHP" target="_manual
piotrooo89
nadużywasz ciapków:

  1. <?php
  2. $sql = "SELECT id FROM uzytkownicy WHERE lancuch_weryfikacji='$verifystring' AND email='$verifyemail'";
  3. ?>


i tak samo w innych przypadkach.
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.