Kategoriler
Genel

C# ve PHP | E-posta adresinin bir kısmını gizlemek

Şifremi unuttum sayfalarında genellikle e-posta ya da kullanıcı adınızı yazın şeklinde bir uyarı görürsünüz, bu alanlarda eğer kayıtlı kullanıcı varsa genelde mail adresinize şifreniz gönderildi gibi bir mesaj görürsünüz. Peki üyeniz kullanıcı adını yazdıysa ve e-posta adresini hatırlamıyorsa ne yapmanız gerekiyor?

Kullanıcı adı girildiğinde cevap olarak e-posta adresini döndürmek pek güvenli bir yöntem değildir, çünkü brute force ile kullanıcı adları denenerek sisteminize üye olan kişilerin e-posta adresleri ele geçirilebilir. Bazı e-posta sağlayıcılar şifremi unuttum kısmında ikincil mailinizi a*********o@gmail.com şeklinde gizleyerek sizin güvenliğinizi sağlamaktadır. İşte vereceğim regex ve örnek program kodları sizin bu gizlemeyi yapmanızı sağlayacak.

string regex = @"(?<=.).(?=.*.{1}@)";

Örnek programlar

C# ile E-posta Regex

using System.IO;
using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string regex = @"(?<=.).(?=.*.{1}@)";

        Console.WriteLine(Regex.Replace("johndoe@hotmail.com", regex, "*"));
        Console.WriteLine(Regex.Replace("lastsamurai@gmail.com", regex, "*"));
        Console.WriteLine(Regex.Replace("alperen@eposta.com", regex, "*"));
        Console.WriteLine(Regex.Replace("john@okul.edu.tr", regex, "*"));
        Console.WriteLine(Regex.Replace("joe@gmail.com", regex, "*"));
        Console.WriteLine(Regex.Replace("jn@gmail.com", regex, "*"));
    }
}

PHP ile E-posta Regex

   $regex = '/(?<=.).(?=.*.{1}@)/u';
   echo preg_replace($regex,'*','johndoe@hotmail.com');

*preg_replace -> PHP 4+ üzerinde çalışmaktadır.
Örnek çıktılar:

j*****e@hotmail.com
l*********i@gmail.com
a*****n@eposta.com
j**n@okul.edu.tr
j*e@gmail.com
jn@gmail.com

Regex yazımı ve fikir için Fikri Abi’ye teşekkürler 🙂

Kategoriler
Dersler

PHP ile MySQL verilerini Excele Aktarma

MySQL de tuttuğumuz bilgileri bazen Excele aktarmamız gerekebiliyor. Php ile bunu yapmak oldukça basit. Fakat kodlamaya başlamadan önce gidiş haritamızı çizelim. MySQL verilerini aktarırken oluşacak Türkçe karakter sorunlarını çözelim.

  1. Veritabanı bağlantısı oluştur.
  2. Dosya adını belirle.
  3. Hangi tabloyu bastıracağımız belirt.
  4. Döngüye  alarak satırları ve sütunları doldur.
  5. Satır ve sütunlarda oluşacak Türkçe Karakter sıkıntılarını çöz.
  6. Dosyayı serverımıza kaydet.
  7. Yazdırdığımız dosyayı indir.

MySQL veritabanımızı Excele aktarırken öncelikle 2 sayfa oluşturacağız ve bunlar olustur.php ile indir.php adında olacaklar. Ardından aşağıdaki kodları kullanabiliriz.

>> olustur.php

 
<?
// Veritabanı Bağlantısı
$host="alperenozlu.com";
$db="alperenozludatabaseadi";
$user="alperenozlu_kullaniciadi";
$pass="alperenozlu_sifree";
$conn=@mysql_connect($host,$user,$pass) or die("Mysql Baglanamadi");
mysql_select_db($db,$conn) or die("Veritabanina Baglanilamadi");
mysql_set_charset('utf8',$conn);
mysql_query("SET COLLATION_CONNECTION = 'latin5_turkish_ci' ");
if(isset($_POST["excelolustur"])){ // FORM SONUC
$dosya = "olusturalacakdosya.xls"; // EXCEL TABLOSU ADI
$yaz = @fopen($dosya,'w+'); 
$tablo_adi = "tabloadi"; // Tablo Adi
$tablo_sorgu = mysql_query("select * from $tabloadi");

fwrite($yaz,"Adt Soyadt Bolumt Emailt Telefont n");
// Bu kod aşağıdaki şemayı çıkarmaktadır.
// A  | B  |   C   |  D  |   E   
// -----------------------------
// ID | Ad | Soyad | Yaş | Email
// -----------------------------

while ($tablo_sonuc = mysql_fetch_row($tablo_sorgu)) {
// Türkçe karakterini çözmek için;
// mb_convert_encoding($tablo_sonuc[sayi], "iso-8859-9", "UTF-8"); kullanılır.
$sutun0 = $tablo_sonuc[0]; // Id olduğu için karakter düzeltmedik. 
$sutun1 = mb_convert_encoding($tablo_sonuc[1], "iso-8859-9", "UTF-8");
$sutun2 = mb_convert_encoding($tablo_sonuc[2], "iso-8859-9", "UTF-8");
$sutun3 = $tablo_sonuc[3]; // Yaş olduğu için karakter düzeltmedik. 
$sutun4 = $tablo_sonuc[4]; // E-posta olduğu için karakter düzeltmedik. 

fwrite($yaz,"$sutun0t $sutun1t $sutun2t $sutun3t $sutun4tn"); 

//Gelen verileri satırlara yazdırdık.
}

mysql_free_result($tablo_sorgu); 
fclose($yaz);
echo "İşlem Tamamlandı"; 
exit;
}
?>
<FORM ACTION="?page=olustur" method="post">
<INPUT TYPE="submit" value="Verileri Aktar" name="excelolustur"> 
</FORM>

İndirme sayfası için ise şöyle bir kod yazabiliriz. ( Bazı excel sürümlerinde otomatik indirmeyebilir, eğer bir hata olursa yorum kısmına yazınız)

>> indir.php

<?php
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="indirelecekdosyaaadi.xls"'); // <-- düzenleyin
header ('Content-Transfer-Encoding: binary');
header('Cache-Control: max-age=0');
$dosyayolu = "uploads/excel.xls"; // <-- düzenleyin
readfile($dosyayolu);

?>

Ardından indir.php’yi çalıştırarak, excel dosyanızı indirebilirsiniz.