Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Tiedostoon kirjoittaminen rekisteröidyttäessä

Hico-Hatiac [27.12.2005 11:38:25]

#

Miten tuohon https://www.ohjelmointiputka.net/koodivinkit/24301-php-kirjautuminen-rekisteröityminen-mysql-llä koodiin saisi tehtyä sellaisen lisän, että kun käyttäjä rekisteröityy, niin se kirjaisi tunnuksen myös nick.txt tiedostoon?

Draiz [27.12.2005 12:16:32]

#

<?php include("ylaosa.php") ?>
<h1>Rekisteröityminen</h1>
<?php
if(isset($_POST['reg_tunnus']) && isset($_POST['reg_salasana']) && isset($_POST['reg_varmistus'])){

   $text = "";
   //tiedot turvallisesti talteen
   $tunnus = get_magic_quotes_gpc() ? $_POST['reg_tunnus'] : mysql_real_escape_string($_POST['reg_tunnus']);
   $salasana = get_magic_quotes_gpc() ? $_POST['reg_salasana'] : mysql_real_escape_string($_POST['reg_salasana']);
   $varmistus = get_magic_quotes_gpc() ? $_POST['reg_varmistus'] : mysql_real_escape_string($_POST['reg_varmistus']);

   //tarkastetaan onko nimimerkki varattu
   $sql = mysql_query("SELECT COUNT(*) AS yht FROM {$tbl_users} WHERE tunnus = '".$tunnus."'",$lnk);
   $sql = mysql_fetch_assoc($sql);
   $yht = $sql['yht'];

   if($yht != 0)
      $text .= "Tunnuksesi on jo rekister&ouml;ity, valitse uusi tunnus<br />\n";

   if(strlen($tunnus) < 1)//minimipituus 1 merkki
      $text .= "Tunnuksesi on liian lyhyt. Tunnuksen minimipituus on 1 merkki<br />\n";

   if(strlen($salasana) < 1)//minimipituus 1 merkki
      $text .= "Salasanasi on liian lyhyt. Salasanan minimipituus on 1 merkki,
      mutta tiedäthän, että mitä pidempi salasana, sen mahdottomampi se on murtaa<br />\n";

   //testataan täsmäävätkö salasanat
   if($salasana != $varmistus)
      $text .= "Salasanat eivät täsmänneet<br />\n";

   if($text == ""){

      //lisätään käyttäjän tunnus ja salasana
      $sql = mysql_query("INSERT INTO {$tbl_users} (tunnus,salasana) VALUES ('".$tunnus."','".md5($salasana)."')",$lnk);
      if(!$sql || mysql_affected_rows($lnk) < 1)
         $text = "SQL-lauseessa virhe.<br />\n";
      else
/* TÄHÄN LAITETAAN NICK.TXT TALLENNUSHOMMELI */
#
#
#
#
$filee = fopen("nick.txt", 'a');
$data = "$tunnus\n";
fwrite ($filee, $data);
#
#
#
#
/* TALLENNUSHOMMA LOPPUU */

         $text = "Rekisteröityminen onnistui<br />";
   }
   echo $text;

}
?>
   <form method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>">
     <table width="0%" border="0">
       <tr>
         <td>Käyttäjätunnus:</td>
         <td><input name="reg_tunnus" type="text" size="15" maxlength="20"
         value="<?php echo isset($_POST['reg_tunnus']) ? $_POST['reg_tunnus'] : ""; ?>" /></td>
       </tr>
       <tr>
         <td>Salasana:</td>
         <td><input name="reg_salasana" type="password" size="15" maxlength="20" /></td>
       </tr>
       <tr>
         <td>Uudestaan:</td>
         <td><input name="reg_varmistus" type="password" size="15" maxlength="20" /></td>
       </tr>
       <tr>
         <td colspan="2"><input type="submit" value="Rekister&ouml;idy" /></td>
       </tr>
     </table>
   </form>
<a href="index.php">Etusivulle</a>

<?php include("alaosa.php") ?>

Hico-Hatiac [27.12.2005 12:28:28]

#

Kiitos erittäin paljon! Tiedän, että tuo oli aloittelijan kysymys, mutta aina sitä oppii uutta ja hyödyllistä.

Hico-Hatiac [27.12.2005 14:25:41]

#

Miten voin tehdä tähän sellaisen homman, että kun käyttäjä painaa 'kirjaudu', niin tarkistetaan, että onko tunnus banlist.txt tiedostossa. Jos on, niin kirjautumislomakkeen kohdalle tulisi teksti "Sinulla on porttikielto!". Jos tunnusta taas ei ole banlist.txt tiedostossa, niin jatketaan normaalisti.

<?php
// IHAN KÄYTTÖESIMERKIKSI VAIN:
if($user){
   echo "Tervetuloa <b>".$user['tunnus']."</b>! | <a href=\"".$_SERVER['PHP_SELF']."?logout\">Kirjaudu ulos</a><br />";
   echo "Viimeisin sivunlatauksesi kello ".$user['last_load'].".";
}else{
   ?>
   <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
     <table width="0%" style="border: 1px solid black;">
       <tr>
         <td>Tunnus:</td>
         <td>Salasana:</td>
         <td><a href="register.php">Rekisteröidy</a></td>
       </tr>
       <tr>
         <td><input name="tunnus" type="text" /></td>
         <td><input name="salasana" type="password" /></td>
         <td><input type="submit" value="Kirjaudu" /></td>
       </tr>
     </table>
   </form>

   <?php
}
?>

pistemies [27.12.2005 16:38:08]

#

Eikö tuossa kannattaisi käyttää mysqliä hyödyksi, kun kerran sellainen on? Luo vaan sinne "banlist"-sarakkeen....

Matso [27.12.2005 17:17:54]

#

Hico-Hatiac kirjoitti:

Miten voin tehdä tähän sellaisen homman, että kun käyttäjä painaa 'kirjaudu', niin tarkistetaan, että onko tunnus banlist.txt tiedostossa. Jos on, niin kirjautumislomakkeen kohdalle tulisi teksti "Sinulla on porttikielto!". Jos tunnusta taas ei ole banlist.txt tiedostossa, niin jatketaan normaalisti.

<?php
// IHAN KÄYTTÖESIMERKIKSI VAIN:
if($user){
   echo "Tervetuloa <b>".$user['tunnus']."</b>! | <a href=\"".$_SERVER['PHP_SELF']."?logout\">Kirjaudu ulos</a>
";
   echo "Viimeisin sivunlatauksesi kello ".$user['last_load'].".";
}else{
   ?>
   <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
     <table width="0%" style="border: 1px solid black;">
       <tr>
         <td>Tunnus:</td>
         <td>Salasana:</td>
         <td><a href="register.php">Rekisteröidy</a></td>
       </tr>
       <tr>
         <td><input name="tunnus" type="text" /></td>
         <td><input name="salasana" type="password" /></td>
         <td><input type="submit" value="Kirjaudu" /></td>
       </tr>
     </table>
   </form>

   <?php
}
?>

Tarkistat banlist.txt tiedoston jokaisen rivin rivikerralaan, löytyykö sieltä kyseistä tunnusta, esim for:lla:

$tiedosto = file("banlist.txt");
$riveja = count($tiedosto);

for($i=0;$i<$riveja;$i++){

if($tunnus == $tiedosto[$i]){
echo "Tunnus on bannattujen listalla!";}
}

No jotain tohon suuntaan...

ajv [27.12.2005 17:34:28]

#

Ja tosiaan kuten Pekka tuossa sanoi järkevintä on tehdä sinne käyttäjätauluun sarake banned tms. (tinyint(1) default 0) ja tarkistaa tuo kenttä siinä vaiheessa kun käyttäjää tunnistetaan.

Vastaus

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

Tietoa sivustosta