2013-07-26 90 views
-1
<?php 
include_once('db.php'); 
session_start(); 

    $selectEmail = $db->prepare("SELECT `email` FROM `users` WHERE `uid` = :uid"); 

     $selectEmail->execute(array(':uid' => $_SESSION['uid'])); 

      $EmailRow = $selectEmail->fetch(); 

       $UserEmail = $EmailRow['email']; 

        echo $UserEmail; 

?> 

我還沒有寫任何代碼,我也沒有要求寫任何代碼。PHP MySQL操縱結果?

這更多的是'我該怎麼做'這個問題。

無論如何,我的問題是:我如何操縱MySQL的結果?

例如:我從數據庫w/PDO中選擇用戶的電子郵件地址,並將其輸出到文本輸入以便他們看到他們的電子郵件,但用星號替換它的前三個字符,以便當他們試圖改變它時,我可以驗證他們知道真實的電子郵件地址,防止帳戶被盜。

我想操縱諸如[email protected]這樣的內容到**[email protected]

這是可能的,如果是這樣,我該怎麼做?

+0

怎麼樣,如果[email protected]:如果名字只有三個字符像[email protected] – 2013-07-26 01:21:58

+0

我不是故意LITERALLY 3個字符,也可能是1或2,如果E的那部分郵件很短。我只是不希望它是@之後的部分,因爲這是可以猜測的。 – user2609179

+0

所以你需要先設置你的規則 – 2013-07-26 01:27:28

回答

0

I want to manipulate something like [email protected] to **[email protected]

你可以嘗試使用此功能發揮substr_replace function

+0

檢查我的編輯,所有密集目的返回[email protected]。我如何更換前三個字符?你能否給我一個這個功能的例子? – user2609179

+0

'substr_replace($ UserEmail,'*',0,2)'結果將是***@inbox.com,在你的場景中你需要一個線或函數來計算電子郵件地址的字符串數並根據需要放置該字符串並將其放在該函數的第四個參數上的數量做邏輯。我不需要爲你做所有的工作,我們都在同一條船上學習:) –

+0

當我使用該代碼時,它給了我http://puu.sh/3LSGf.png。電子郵件是[email protected]。換句話說,它正在吃掉應該顯示的字母。 – user2609179

0

你可以嘗試這樣的事情。我在代碼中使用了正確的註釋。

$userEmail = "[email protected]"; 
$len = strlen($userEmail); //Get the length of the email 

list($email, $domain) = explode('@', $userEmail); //Separate domain and mail 

$emailLength = strlen($email); //find mail length 
$maskLength = floor($emailLength/2); //find the length of mask, half of the email length in this example 
$email = substr($userEmail, $maskLength, $len); //remove the characters that needs to be masked 

for($i = 0; $i < $maskLength; $i++){ 
    $mask .= '*'; 
} 

$maskedEmail = $mask . $email; 

echo $maskedEmail; //your output 
+0

沒有工作。使用它,它給了我這個 - http://puu.sh/3LSK6.png – user2609179