webForumDet fria alternativet

Kan inte lagra blank

4 svar · 332 visningar · startad av Cypher

CypherMedlem sedan mars 200622 inlägg
#1

Jag har en hemsida där användare kan fylla i sina uppgifter.
Problemet är att om man skrivit i en uppgift och sedan vill ta bort den uppgiften helt så går det inte.
Alltså.. om man vill ta bort uppgiften och suddar ut allt och trycker på att spara ändringarna så sparas inte dessa ändringar. Då har man fortfarande kvar det som fanns innan man suddade ut allt.
Om man vill ha bort allt måste man skriva in ett mellanslag för att ingenting ska synas.

Så här vill jag ju självklart inte ha det. Någon som vet vad som kan vara fel?

K@llenMedlem sedan mars 20032 667 inlägg
#2

Du har inte NOT NULL inställt för den kolumnen i databasen?

tydalMedlem sedan juni 20034 013 inlägg
#3

Skriptet är uppenbarligen gjort så att det bara ska spara de fält som har innehåll. Det du får göra är att ta bort kollen, men i och med att du frågar antar jag att du inte har skrivit skriptet själv, så posta det här.

CypherMedlem sedan mars 200622 inlägg
#4

Det är en hel del filer så jag postar med hela .zip filen
Scriptet går att ladda ner Här

CypherMedlem sedan mars 200622 inlägg
#5

Nu har jag haft tid att ge ett svar..

Detta är i själva användar editeringen:

<?php
include("include/session.php");
?>
<form action="process.php" method="POST">
   <table align="left" border="0" cellspacing="0" cellpadding="3">
       <tr>
           <td width="118"><div class="content-div">Real Name:</div></td>
           <td width="200"><input width="200" type="text" name="name" maxlength="20" value="
<?php
if($form->value("name") == ""){
	 echo $session->userinfo['name'];
}else{
         echo $form->value("name");
}
?>"></td>
     </tr>
   </table>

(Kortade ner den lite för alla fält ser lika ut)

Detta är en del av process.php som har betydelse till detta:

   /**
    * procEditAccount - Attempts to edit the user's account
    * information, including the password, which must be verified
    * before a change is made.
    */
   function procEditAccount(){
      global $session, $form;
      /* Account edit attempt */
      $retval = $session->editAccount($_POST['curpass'], $_POST['newpass'], $_POST['email'], $_POST['sid'], $_POST['name'], $_POST['birthday'], $_POST['msn'], $_POST['icq'], $_POST['xfire'], $_POST['location'], $_POST['status'], $_POST['sex']);

      /* Account edit successful */
      if($retval){
         $_SESSION['useredit'] = true;
         header("Location: ".$session->referrer);
      }
      /* Error found with form */
      else{
         $_SESSION['value_array'] = $_POST;
         $_SESSION['error_array'] = $form->getErrorArray();
         header("Location: ".$session->referrer);
      }
   }

Och detta i session.php:

function editAccount($subcurpass, $subnewpass, $subemail, $subsid, $subname, $subbirthday, $submsn, $subicq, $subxfire, $sublocation, $substatus, $subsex){
      global $database, $form;  //The database and form object
      /* New password entered */
      if($subnewpass){
         /* Current Password error checking */
         $field = "curpass";  //Use field name for current password
         if(!$subcurpass){
            $form->setError($field, "* Current Password not entered");
         }
         else{
            /* Check if password too short or is not alphanumeric */
            $subcurpass = stripslashes($subcurpass);
            if(strlen($subcurpass) < 4 ||
               !eregi("^([0-9a-z])+$", ($subcurpass = trim($subcurpass)))){
               $form->setError($field, "* Current Password incorrect");
            }
            /* Password entered is incorrect */
            if($database->confirmUserPass($this->username,md5($subcurpass)) != 0){
               $form->setError($field, "* Current Password incorrect");
            }
         }
         
         /* New Password error checking */
         $field = "newpass";  //Use field name for new password
         /* Spruce up password and check length*/
         $subpass = stripslashes($subnewpass);
         if(strlen($subnewpass) < 4){
            $form->setError($field, "* New Password too short");
         }
         /* Check if password is not alphanumeric */
         else if(!eregi("^([0-9a-z])+$", ($subnewpass = trim($subnewpass)))){
            $form->setError($field, "* New Password not alphanumeric");
         }
      }
      /* Change password attempted */
      else if($subcurpass){
         /* New Password error reporting */
         $field = "newpass";  //Use field name for new password
         $form->setError($field, "* New Password not entered");
      }
      /* Email error checking */
      $field = "email";  //Use field name for email
      if($subemail && strlen($subemail = trim($subemail)) > 0){
         /* Check if valid email address */
         $regex = "^[_+a-z0-9-]+(\.[_+a-z0-9-]+)*"
                 ."@[a-z0-9-]+(\.[a-z0-9-]{1,})*"
                 ."\.([a-z]{2,}){1}$";
         if(!eregi($regex,$subemail)){
            $form->setError($field, "* Email invalid");
         }
         $subemail = stripslashes($subemail);
      }
      /* Errors exist, have user correct them */
      if($form->num_errors > 0){
         return false;  //Errors with form
      }
      /* Update password since there were no errors */
      if($subcurpass && $subnewpass){$database->updateUserField($this->username,"password",md5($subnewpass));
      }
      /* Change Email */
      if($subemail){
         $database->updateUserField($this->username,"email",$subemail);
      }
	  /* Change Steam ID */
      if($subsid){
         $database->updateUserField($this->username,"sid",$subsid);
      }
	  /* Change Real Name */
      if($subname){
         $database->updateUserField($this->username,"name",$subname);
      }
	  /* Change Year of Birth */
      if($subbirthday){
        $database->updateUserField($this->username,"birthday",$subbirthday);
      }
	  /* Change MSN */
      if($submsn){
         $database->updateUserField($this->username,"msn",$submsn);
      }
      /* Change ICQ */
      if($subicq){
         $database->updateUserField($this->username,"icq",$subicq);
      }
	  /* Change X-Fire */
      if($subxfire){
         $database->updateUserField($this->username,"xfire",$subxfire);
      }
	  /* Change Location */
      if($sublocation){
         $database->updateUserField($this->username,"location",$sublocation);
      }
	  /* Change Status */
      if($substatus){
         $database->updateUserField($this->username,"status",$substatus);
      }
	  /* Change Sex */
      if($subsex){
         $database->updateUserField($this->username,"sex",$subsex);
      }
      /* Success! */
      return true;
   }

Jag hoppas någon kan hitta var denna "spärr" ligger.

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)