Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Rekisteröitymislomake ja tietokanta ongelma

Sivun loppuun

Hex [06.04.2010 15:20:31]

#

Hei, alhaalla on minun rekisteröitymiskoodini ja koska kaikki tiedot (username,pass) pitäisi saada sinne tietokantani users osioon, niin miten muokkaan tuon rekisteröitymiskoodini niin että kaikki tiedot menisivät database.phpn kautta sinne tietokannan users kohtaan. Toivottavasti tajusitte.

Rekisteröitymislomakkeeni koodi:

<?php
$error_message = "";
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
   $action = isset($_POST['action']) ? $_POST['action'] : '';
   $database = './database.php';
   $success_page = 'complete.php';

   if (!file_exists($database))
   {
      echo 'User database not found!';
      exit;
   }
   if ($action == 'signup')
   {
      $newusername = $_POST['username'];
      $newemail = $_POST['email'];
      $newpassword = $_POST['password'];
      $confirmpassword = $_POST['confirmpassword'];
      $newfullname = $_POST['fullname'];
      if ($newpassword != $confirmpassword)
      {
         $error_message = 'Password and Confirm Password are not the same!';
      }
      else
      if (!ereg("^[A-Za-z0-9_!@$]{1,50}$", $newusername))
      {
         $error_message = 'Username is not valid, please check and try again!';
      }
      else
      if (!ereg("^[A-Za-z0-9_!@$]{1,50}$", $newpassword))
      {
         $error_message = 'Password is not valid, please check and try again!';
      }
      else
      if (!ereg("^[A-Za-z0-9_!@$.' &]{1,50}$", $newfullname))
      {
         $error_message = 'Fullname is not valid, please check and try again!';
      }
      else
      if (!ereg("^.+@.+\..+$", $newemail))
      {
         $error_message = 'Email is not a valid email address. Please check and try again.';
      }
      $items = file($database);
      foreach($items as $line)
      {
         list($username, $password, $email, $fullname) = explode('|', trim($line));
         if ($newusername == $username)
         {
            $error_message = 'Username already used. Please select another username.';
            break;
         }
      }
      if (empty($error_message))
      {
         $file = fopen($database, 'a');
         fwrite($file, $newusername);
         fwrite($file, '|');
         fwrite($file, md5($newpassword));
         fwrite($file, '|');
         fwrite($file, $newemail);
         fwrite($file, '|');
         fwrite($file, $newfullname);
         fwrite($file, '|1');
         fwrite($file, "\r\n");
         fclose($file);

         $mailto = $newemail;
         $subject = 'Your new account';
         $message = 'A new account has been created!';
         $message .= "\r\nUsername: ";
         $message .= $newusername;
         $message .= "\r\nPassword: ";
         $message .= $newpassword;
         $message .= "\r\n";
         $header  = "From: noreply@sivuni.net"."\r\n";
         $header .= "Reply-To: noreply@sivuni.net"."\r\n";
         $header .= "MIME-Version: 1.0"."\r\n";
         $header .= "Content-Type: text/plain; charset=utf-8"."\r\n";
         $header .= "Content-Transfer-Encoding: 8bit"."\r\n";
         $header .= "X-Mailer: PHP v".phpversion();
         mail($mailto, $subject, $message, $header);
         header('Location: '.$success_page);
         exit;
      }
   }
}
?>

Database.phpn koodi:

<?php

$db_user = "16*7_user";
$db_passwd = "*******";
$db_server = "localhost";
$db_db = "16*7_db";
$tbl_users = "users"; //käyttäjät-taulun nimi.

?>

trilog [06.04.2010 15:24:58]

#

Ethän tuossa edes avaa kantaasi yhteyttä. Lue tämä ja/tai tämä, ja yritä edes itse – täältä saat apua, jos yksittäisiä ongelmia ilmenee.

pistemies [06.04.2010 18:09:54]

#

Hä?
Sinähän tallentelet noita syötettyi tietoi tuohon database.php tiedostoon... tarkoituksella?
Et ole sisällyttänyt sen muuttujia tuohon tiedostoon, joka käsittelee postauksia...

Macro [06.04.2010 18:22:35]

#

Huih. Mitä teet tietokannalla, kun kirjoitat niitä fwritellä? Äly hoi!

Ensin laitat mysql_connect() ja mysql_select_db() funktiot kuntoon, sitten kirjotiat mysql_query() funktiolla. Putkaan tulikin juuri hieno opas, lue kokonaan ajatuksella.

Hex [06.04.2010 20:12:12]

#

Macro kirjoitti:

Huih. Mitä teet tietokannalla, kun kirjoitat niitä fwritellä? Äly hoi!

Hmm.. eli siis enkö tarvitse mitään tietokantoja tähän koodiin? vai siis pitäisikö tämän systeemin toimia heti kun nuo mysql_connect funktiot on kunnossa?

trilog [06.04.2010 20:20:14]

#

Tuo systeemi toimii jo; se kirjoittaa tekstitiedostoon käyttäjätiedot. Olet kuitenkin yrittänyt tehdä jotakin sellaista, josta huomaa heti, ettei sinulla ole käsitystä siitä mikä tietokanta on.

Hex [06.04.2010 20:34:26]

#

Eli pitäisikö minun vain lisätä nuo MYSQL funktiot alkuun niin systeemi toimisi?

trilog [06.04.2010 20:45:31]

#

Ei. Tietokantaan ajetaan kyselyitä SQL-lausekkeilla. Eli joudut ottamaan yhteyden tietokannanhallintajärjestelmään (mysql_connect), valitsemaan käytettävän tietokannan (mysql_select_db), ajamaan haluttuja kyselyitä kantaan (mysql_query) ja sulkemaan yhteyden tietokannanhallintajärjestelmään (mysql_close) (oletin tässä, että käytettävä tietokannanhallintajärjestelmä on MySQL). Tätä ennen joudut luonnollisesti suunnittelemaan tietokannan rakenteen ja tekemään siihen liittyvät toimet.

Edellä mainittujen toimien tekemien vaatii perustietojen tietämisen tietokannoista ja totta kai myös käytettävästä ohjelmointikielestä (tässä: PHP). Kannattaa siis suunnata katse oppaita kohti, kuten tässä on jo useampaan kertaan todettu.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta