Hallo

Ik heb de volgende script geschreven maar op en of andere manier kommen de gegevens niet in de database.

Als iemand nieuw zich lid maakt wordt deze rang 1 gegeven dus member om iemand andere rechten te geven moet je naar de db gaan of zelf een scriptje maken.:P


<?php
# error reporting
ini_set('display_errors', 1);
error_reporting(E_ALL);
?> 

<?
session_start();
?>
<font face=verdana size=1>

<?
if($_SESSION['login'] == "true"){
   print " You have allready an account.";//because your logged in stupid
}

include('connect.php');
if(!isset($_REQUEST['submit'])){
?>
<form method=post acion=""<? $_SERVER['PHP_SELF'] ?>"">
<table>
   <tr>
      <td>
         <font face=verdana size=1>Username:
      </td>
      <td>
         <input type="text" name="name" maxlength="15">
      </td>
   </tr>
   <tr>
      <td>
         <font face=verdana size=1>Password:
      </td>
      <td>
         <input type="password" name="password">
      </td>
   </tr>
   <tr>
      <td>
         <font face=verdana size=1>Confirm:
      </td>
      <td>
            <input type="password" name="password">
      </td>
   </tr>
   <tr>
      <td>
         <input type="submit" value=submit name="submit">
      </td>
      <td>
         <input type="reset">
      </td>
   </tr>
</table>
</form>
<?php
}else{
   //request everything
   $dead = "false";//We make 'dead' if some fields are not filled in don't check for pass and name in db.
   $message = "<font face=verdana size=1>Pleas fill in all fields correctly:<br>";
   $username = $_POST['name'];
   $pass1 = $_POST['pass1'];
   $pass2 = $_POST['pass2'];
   $ip = $_SERVER['REMOTE_ADDR'];
   $status = "1";//1 member, 2,co-admin 3, admin
   //begin search for errors
   if(strlen($username) <= 1 or strlen($username) >=15){
      $dead = "true";
      $message .= "Username (2-14)<br>";
   }
   if(strlen($password) < 6 or strlen($password) > 20 or $password !== $password) {
      $dead = "true";
      $message .= "Password (6-20) or passwords does not match";
   }
   if($dead = "false"){
      $username = strtolower(trim(strip_tags($username)));
      $password = trim($password);
      $password = md5($password);
      $query = mysql_query("SELECT * FROM members WHERE username ='$username'");
      $aantalrijen = mysql_num_rows($query);                   
      if($aantalrijen == 1){         
         print "<font face=verdana size=1>Sorry, your username exists allready.";         
      }
      else{
         $query1 = "INSERT INTO members(username, password, ip, status) VALUES ('$username','$password', '$ip','$status')";
         if(mysql_query($query1)){
             print "<font face=verdana size=1>Well donne your now a member of the RTD group.<br><a href=login.php>Login</a>";
         }   
      }
      
   }
   elseif($dead == "true"){
         print $message;
   }
}              
?> 


Kan iemand mij helpen??
Alvast bedankt

Waarom 4 keer posten van dit topic?

Snel even gekeken.
Wat mij direct opviel: if($dead = "false"){
Een vergelijking heeft == of === en geen = want dat is een waarde toekennen aan een variabele.

En jouw true en false zijn teksten en geen booleans.
Gebruik ze dus zonder quotes dan zijn ze wel booleans.
Waar haalt men tegenwoordig toch vandaan dat strip_tags icm databases zinnig is? Het enige dat werkt is de escaping methode van je database. Ook weer die gekke maximum lengte van wachtwoorden, extreem verouderde HTML, om nog maar te zwijgen van het steenkolenengels. Verder: Wat SanThe zegt: Tekst is tekst, boolean is boolean. === en == zijn bedoeld om te vergelijken, = is toekenning.
Verder nog even dit:
Waar zijn de (html) dubbele quotes bij method=post en de diverse waarden op de volgende regels.
En hier gebruik je dubbele dubbele quotes acion=""<? $_SERVER['PHP_SELF'] ?>"">
$_SERVER['PHP_SELF'] kan je beter weglaten.
En met acion zal je wel action bedoelen.
probeer het ook eens met complete php-tags

dus <¿php ipv alleen maar <¿

die op regel 7 kun je dan samen met de voorafgaande sluit-tag verwijderen om een foutmelding over headers-already-sent te voorkomen.

Reageren