Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Jak wyłaczyć pokazywanie e-maila
Forum PHP.pl > Forum > Przedszkole
matuty
Witam!
Słabo ogarniam forum,i jestem nowy więc szukając podobnego tematu mogłem go pominąć.Jeśli podobny temat istnieje to proszę mnie do niego przekierować bez głupich odpowiedzi ;D

Jak napisać skrypt który gdy użytkownik zablokuje pokazywanie e-maila to się on niepojawia.Chodzi mi o profil i listę użytkowników

Jeśli będziecie potrzebowali jakiś skrypt to wystarczy napisać.
przemo191
No to daj jakiś kod, bo na sucho można gdybać...
matuty
Plik profil.php

CODE


<?php

require_once('inc/inc.php');

if(!empty($user['login']))
{

require('style/menu_1.php');

echo '<div class="przes">';


if (isset($_GET['gracz']))
{

$username = $_GET['gracz'];

$userquery = mysql_query("SELECT * FROM user WHERE login = '$username'") or die (mysql_error().'funkcja profili tymczasowo niedziała');

$rows = mysql_num_rows($userquery);

if ($rows != 1)
{
die('<center><h2><div id="a">Nieznaleziono gracza o takim loginie!</div></h2></center>');
}
else{
while( $row = mysql_fetch_array($userquery, MYSQL_ASSOC))

{
$login = $row['login'];
$email = $row['email'];
$opis = $row['opis'];
require_once('style/profil/profil_func.php');
}
}
}

echo '</div>';

require_once('style/menu_end.php');

mysql_free_result($userquery);
mysql_close();
}else
{
header('Location: index.php');
}

?>


Plik z listą użytkowników

CODE



<?php

require_once('inc/inc.php');

if(!empty($user['login']))
{

$all = "SELECT * FROM user";
$wyb = mysql_query($all) or die("Nie udało się wywołać użytkowników...");

$query = mysql_query("SELECT count(*) FROM `user`");
$ile = mysql_fetch_assoc($query);

echo
'
<div class="prze">
<div id="a">
<h2>
'."liczba użytkowników: ". $ile['count(*)'].'
</h2>

<form action="profil.php" method="GET">
Idź do profilu użytkownika: <input type="text" name="gracz" style="color:white;background-color:#000000;border:0;border-radius:5px;" size="16">
<input type="submit" value="Przejdź">
</form>
</div>

<center>
<table cellspacing="39px" cellpadding="0px">
<tr>
<td>
<img src="img/users/uslog.png">
</td>
<td>
<img src="img/users/email.png">
</td>
<td>
<img src="img/users/uslvl.png">
<td>
<img src="img/users/uswin.png">
</td>
<td>
<img src="img/users/uslose.png">
</td>
</tr>
</table>
';

while ($row = mysql_fetch_array($wyb))
{



if($row["email"] == $user["email"])
{

$row['email'] = '<div id="a">'.$row ["email"].'</div>';
}else
{
$row['email'] = $row['email'];
}

echo
'
<div id="ramka">
<div id="tab">
<center>
<table cellpadding="7px">
<tr align="center">

<td>

<div id="a">
<a href="profil.php?gracz='.$row['login'].'">'.$row['login'].'</a>
</div>

</td>

<td align="left">'.$row["email"].'</td>
<td>'.$row["lvl"].'</td>
<td>'.$row["wygrane"].'</td>
<td>'.$row["przegrane"].'</td>
</tr>
</table>
</center>
</div>
</div>
';
}

mysql_free_result($wyb);
mysql_free_result($query);
mysql_close();
}else
{
header('Location:index.php');
}

?>



Plik profil_func.php

CODE



<?php

if($login == $user['login'])
{

if(isset($_POST['op']))
{
$nowy_opis = $_POST['opis'];
$zmien_opis = mysql_query("UPDATE `users` SET `opis`='$nowy_opis' WHERE `id`='$user['id']'");

if($zmien_opis != 1){
echo "nie można zmienić opisu";
}else{
echo"Zmieniono opis";
}

}

if(isset($_POST['mail'])){





}


echo'
<table>
<tr>
<td>
<table>
<tr>
<td bgcolor="1F89FF" width="250px" align="center" height="300px">
<div id="tab3">

<center>
<div id="b">
'.$login.' - to twój profil.
</div>
</center>

<table cellspacing="20px">
<tr align="center">
<td>
<img src="img/users/email.png">
</td>
</tr>
<tr align="center">
<td>
<div id="a">'.$email.'</div>
</td>
</tr>
<tr align="center">
<td>
<img src="img/users/uslog.png">
</td>
</tr>
<tr align="center">
<td>
<div id="a">'.$login.'</div>
</td>
</tr>
</table>
</div>
</div>
</td>
<td>
<table>
<tr>
<td>
<form action="" method="post">
Zmień opis:<br />
<textarea name="opis" cols="30" rows="5"></textarea>
<input type="submit" value="zmień" name="op">
</form>
</td>
</tr>
<tr>
<td>
<form action="" method="post">
<h4>Pokazywać e-mail?</h4>
<input type="radio" name="tak" /> Tak<br />
<input type="radio" name="nie" />Nie<br />
<input type="submit" value="zapisz" name="mail">
</form>
</td>
</tr>
</table>
';

}

?>



Jeżeli czegoś nierozumiecie to chętnie wyjaśnie
SmokAnalog
Wklej kod z odpowiednim bbcode.
matuty
  1.  
  2.  
  3.  
  4. <?php
  5.  
  6. require_once('inc/inc.php');
  7.  
  8. if(!empty($user['login']))
  9. {
  10.  
  11. require('style/menu_1.php');
  12.  
  13. echo '<div class="przes">';
  14.  
  15.  
  16. if (isset($_GET['gracz']))
  17. {
  18.  
  19. $username = $_GET['gracz'];
  20.  
  21. $userquery = mysql_query("SELECT * FROM user WHERE login = '$username'") or die (mysql_error().'funkcja profili tymczasowo niedziała');
  22.  
  23. $rows = mysql_num_rows($userquery);
  24.  
  25. if ($rows != 1)
  26. {
  27. die('<center><h2><div id="a">Nieznaleziono gracza o takim loginie!</div></h2></center>');
  28. }
  29. else{
  30. while( $row = mysql_fetch_array($userquery, MYSQL_ASSOC))
  31.  
  32. {
  33. $login = $row['login'];
  34. $email = $row['email'];
  35.  
  36. $opis = $row['opis'];
  37. require_once('style/profil/profil_func.php');
  38. }
  39. }
  40. }
  41.  
  42. echo '</div>';
  43.  
  44. require_once('style/menu_end.php');
  45.  
  46. mysql_free_result($userquery);
  47. }else
  48. {
  49. header('Location: index.php');
  50. }
  51.  
  52.  
  53. ?>


Plik z listą użytkowników

  1. <?php
  2.  
  3. require_once('inc/inc.php');
  4.  
  5. if(!empty($user['login']))
  6. {
  7.  
  8. $all = "SELECT * FROM user";
  9. $wyb = mysql_query($all) or die("Nie udało się wywołać użytkowników...");
  10.  
  11. $query = mysql_query("SELECT count(*) FROM `user`");
  12. $ile = mysql_fetch_assoc($query);
  13.  
  14. '
  15. <div class="prze">
  16. <div id="a">
  17. <h2>
  18. '."liczba użytkowników: ". $ile['count(*)'].'
  19. </h2>
  20.  
  21. <form action="profil.php" method="GET">
  22. Idź do profilu użytkownika: <input type="text" name="gracz" style="color:white;background-color:#000000;border:0;border-radius:5px;" size="16">
  23. <input type="submit" value="Przejdź">
  24. </form>
  25. </div>
  26.  
  27. <center>
  28. <table cellspacing="39px" cellpadding="0px">
  29. <tr>
  30. <td>
  31. <img src="img/users/uslog.png">
  32. </td>
  33. <td>
  34. <img src="img/users/email.png">
  35. </td>
  36. <td>
  37. <img src="img/users/uslvl.png">
  38. <td>
  39. <img src="img/users/uswin.png">
  40. </td>
  41. <td>
  42. <img src="img/users/uslose.png">
  43. </td>
  44. </tr>
  45. </table>
  46. ';
  47.  
  48. while ($row = mysql_fetch_array($wyb))
  49. {
  50.  
  51.  
  52.  
  53. if($row["email"] == $user["email"])
  54. {
  55.  
  56. $row['email'] = '<div id="a">'.$row ["email"].'</div>';
  57. }else
  58. {
  59. $row['email'] = $row['email'];
  60. }
  61.  
  62. '
  63. <div id="ramka">
  64. <div id="tab">
  65. <center>
  66. <table cellpadding="7px">
  67. <tr align="center">
  68. <td><div id="a"><a href="profil.php?gracz='.$row['login'].'">'.$row['login'].'</a></div></td>
  69. <td align="left">'.$row["email"].'</td>
  70. <td>'.$row["lvl"].'</td>
  71. <td>'.$row["wygrane"].'</td>
  72. <td>'.$row["przegrane"].'</td>
  73. </tr>
  74. </table>
  75. </center>
  76. </div>
  77. </div>
  78. ';
  79. }
  80.  
  81. }else
  82. {
  83. header('Location:index.php');
  84. }
  85.  
  86. ?>


Plik profil_func.php

  1.  
  2.  
  3.  
  4.  
  5. <?php
  6.  
  7. if($login == $user['login'])
  8. {
  9. if(isset($_POST['op']))
  10. {
  11. $nowy_opis = $_POST['opis'];
  12. $zmien_opis = mysql_query("UPDATE `user` SET `opis`='$nowy_opis' WHERE `login`='$login'");
  13.  
  14. if($zmien_opis != 1){
  15. echo "nie można zmienić opisu";
  16. }else{
  17. echo"Zmieniono opis";
  18. }
  19.  
  20. }
  21.  
  22. <table>
  23. <tr>
  24. <td>
  25. <table>
  26. <tr>
  27. <td align bgcolor="1F89FF" width="250px" ="center" height="300px">
  28.  
  29.  
  30. <center>
  31. <div id="b">
  32. '.$login.' - to twój profil.
  33. </div>
  34. </center>
  35.  
  36. <table cellspacing="20px">
  37. <tr align="center">
  38. <td>
  39. <img src="img/users/email.png">
  40. </td>
  41. </tr>
  42. <tr align="center">
  43. <td>
  44. <div id="a">'.$email.'</div>
  45. </td>
  46. </tr>
  47. <tr align="center">
  48. <td>
  49. <img src="img/users/uslog.png">
  50. </td>
  51. </tr>
  52. <tr align="center">
  53. <td>
  54. <div id="a">'.$login.'</div>
  55. </td>
  56. </tr>
  57. </table>
  58. </td>
  59. <td>
  60. <table>
  61. <tr>
  62. <td>
  63. Twój opis<br />
  64. '.$opis.'
  65. </td>
  66. </tr>
  67. <tr>
  68. <td>
  69. <form action="" method="post">
  70. Zmień opis:<br />
  71. <textarea name="opis" cols="30" rows="5"></textarea>
  72. <input type="submit" value="zmień" name="op">
  73. </form>
  74. </td>
  75. </tr>
  76. <tr>
  77. <td>
  78. <form action="" method="post">
  79. <h4>Pokazywać e-mail?</h4>
  80. <input type="radio" name="tak" /> Tak<br />
  81. <input type="radio" name="nie" />Nie<br />
  82. <input type="submit" value="zapisz" name="mail">
  83. </form>
  84. </td>
  85. </tr>
  86. </table>
  87. ';
  88.  
  89. }
  90.  
  91. ?>
  92.  
  93.  
  94.  
Turson
Jeżeli pobierasz jednego usera to pętla nie jest potrzebna
  1. else{
  2. while( $row = mysql_fetch_array($userquery, MYSQL_ASSOC))
  3.  
  4. {
  5. $login = $row['login'];
  6. $email = $row['email'];
  7.  
  8. $opis = $row['opis'];
  9. require_once('style/profil/profil_func.php');
  10. }
  11. }



Genialne
  1. else
  2. {
  3. $row['email'] = $row['email'];
  4. }


Dałeś kod, który nic nie mówi. Musisz mieć gdzieś zapisane czy user zezwala na pokazywanie e-maila czy nie. Na tej podstawie tworzysz prosty warunek if i to wszystko...

matuty
Ta pętla robi profile do każdego użytkownika osobno.zasada jest taka jak przy liście użytkowników.
Wgl przeczytałeś to?

  1. $username = $_GET['gracz'];
  2.  
  3. $userquery = mysql_query("SELECT * FROM user WHERE login = '$username'") or die (mysql_error().'funkcja profili tymczasowo niedziała');

Gdy w pasku napiszemy :
Profil.php?gracz=hiniec123 - to pokaże się profil hinca jeśli taki użytkownik istnieje
Jeśli profil.php?gracz=matuty - to samo tylko że profil matutyego
a z tym $row['email'] = $row['email'] się pomyliłem ;p
c4ash
Cytat(matuty @ 15.02.2014, 17:28:33 ) *
Jak napisać skrypt który gdy użytkownik zablokuje pokazywanie e-maila to się on niepojawia.Chodzi mi o profil i listę użytkowników

Znajdz sobie w tych plikach linijke, gdzie pokazujesz maila. Przed pokazaniem maila daj if`a , cos w stylu
  1. if ($row['showMail'] == 1) {
  2. echo $row['email'];
  3. }
  4. else {
  5. echo ('Email ukryty.');
  6. }

Wypadalo by w profilu dodac pole typu checkbox, aby user okreslil, czy chce pokazac mail, czy nie. Potem z profilu robisz UPDATE z polem showMail - wystarczy tinyint(1) - jesli chce pokazac mail, to przyjmuje wartosc 1, inaczej 0. Jak to sobie obrobic, to raczej bedziesz juz wiedzial wink.gif


EDITED:
Znalazlem jeszcze takie cos:
  1. $query = mysql_query("SELECT count(*) FROM `user`");
  2. $ile = mysql_fetch_assoc($query);
  3.  
  4. '
  5. <div class="prze">
  6. <div id="a">
  7. <h2>
  8. '."liczba użytkowników: ". $ile['count(*)'].'
  9. </h2>

Sam jestem poczatkujacy, wiec moge sie tu mylic, ale jesli masz spora baze, to takie zapytanie bedzie bardziej obciazalo baze, niz gdy zawezisz zapytanie do:
  1. ("SELECT count(login) FROM `user`");

Chodzi o to, aby nie mielilo zapytanie wszystkich pol, tylko te ktore potrzeba, wiec wystarczy policzyc liczbe loginow, czy tez pewnie masz jakies `id` w tej tabeli - bedziesz miec rowniez liczbe rekordow, a oszczedzisz na czasie i nie obciazysz bazy tak bardzo. Chyba, ze w tym pliku jeszcze korzystasz z innych pol... ale tak dokladnie sie nie wczytywalem.
Turson
Cytat(matuty @ 16.02.2014, 12:25:34 ) *
Ta pętla robi profile do każdego użytkownika osobno.zasada jest taka jak przy liście użytkowników.
Wgl przeczytałeś to?

  1. $username = $_GET['gracz'];
  2.  
  3. $userquery = mysql_query("SELECT * FROM user WHERE login = '$username'") or die (mysql_error().'funkcja profili tymczasowo niedziała');

Gdy w pasku napiszemy :
Profil.php?gracz=hiniec123 - to pokaże się profil hinca jeśli taki użytkownik istnieje
Jeśli profil.php?gracz=matuty - to samo tylko że profil matutyego
a z tym $row['email'] = $row['email'] się pomyliłem ;p

Zapytanie może zwrócić 1 wynik bądź 0, bo warunek może spełnić maksymalnie 1 użytkownik, więc pętla nie jest potrzebna jeszcze raz powtórzę.
matuty
Cytat(c4ash @ 17.02.2014, 09:07:38 ) *
Znajdz sobie w tych plikach linijke, gdzie pokazujesz maila. Przed pokazaniem maila daj if`a , cos w stylu
  1. if ($row['showMail'] == 1) {
  2. echo $row['email'];
  3. }
  4. else {
  5. echo ('Email ukryty.');
  6. }

Wypadalo by w profilu dodac pole typu checkbox, aby user okreslil, czy chce pokazac mail, czy nie. Potem z profilu robisz UPDATE z polem showMail - wystarczy tinyint(1) - jesli chce pokazac mail, to przyjmuje wartosc 1, inaczej 0. Jak to sobie obrobic, to raczej bedziesz juz wiedzial wink.gif


EDITED:
Znalazlem jeszcze takie cos:
  1. $query = mysql_query("SELECT count(*) FROM `user`");
  2. $ile = mysql_fetch_assoc($query);
  3.  
  4. '
  5. <div class="prze">
  6. <div id="a">
  7. <h2>
  8. '."liczba użytkowników: ". $ile['count(*)'].'
  9. </h2>

Sam jestem poczatkujacy, wiec moge sie tu mylic, ale jesli masz spora baze, to takie zapytanie bedzie bardziej obciazalo baze, niz gdy zawezisz zapytanie do:
  1. ("SELECT count(login) FROM `user`");

Chodzi o to, aby nie mielilo zapytanie wszystkich pol, tylko te ktore potrzeba, wiec wystarczy policzyc liczbe loginow, czy tez pewnie masz jakies `id` w tej tabeli - bedziesz miec rowniez liczbe rekordow, a oszczedzisz na czasie i nie obciazysz bazy tak bardzo. Chyba, ze w tym pliku jeszcze korzystasz z innych pol... ale tak dokladnie sie nie wczytywalem.


z tym emailem-to już obczajam oco chodzi biggrin.gif thx.
a z liczeniem użytkowników sie zaraz przekonam jeśli zadziała to spowoduje duże odciążenie dla serwera ;D

Cytat(Turson @ 17.02.2014, 09:15:37 ) *
Zapytanie może zwrócić 1 wynik bądź 0, bo warunek może spełnić maksymalnie 1 użytkownik, więc pętla nie jest potrzebna jeszcze raz powtórzę.


hmm jemu działa - http://www.youtube.com/watch?v=IYmJeri6r0Y
w sumie to mało mnie obchodzi na jakiej podstawie to działa ale uzyskałem oczekiwany rezultat biggrin.gif
Turson
Sprawdź to
  1. else{
  2. $row = mysql_fetch_array($userquery, MYSQL_ASSOC);
  3. $login = $row['login'];
  4. $email = $row['email'];
  5. $opis = $row['opis'];
  6. require_once('style/profil/profil_func.php');
  7. }
matuty
to wszystko:

Cytat(Turson @ 17.02.2014, 10:50:34 ) *
  1. $login = $row['login'];
  2. $email = $row['email'];
  3. $opis = $row['opis'];

ma być w $row?

czy to ma być tak?(chodzi mi o średnik)
  1. $row = mysql_fetch_array($userquery, MYSQL_ASSOC);


Turson
Po prostu zgubiłem średnik. Ma być.
matuty
ok spróbuje biggrin.gif
Działa dzięki.Ale dalej nie rozumiem dlaczego niemoże być tak jak było...
nie widze żadnej różnicy ale już zostawie bez pętli.
Turson
Pętla jest używana, kiedy pobierasz wiele wyników i chcesz je np. wyświetlić. Jeżeli pobierasz 1 rekord jest ona zupełnie niepotrzebna i zastosowanie z posta #11 jest najlepsze.
matuty
ok zastosuje sie tongue.gif
Turson
Warto również wspomnieć o
  1. $username = $_GET['gracz'];
  2. $userquery = mysql_query("SELECT * FROM user WHERE login = '$username'");

wstawianie wartości bezpośrednio do zapytania, która może być edytowana przez użytkownika (a więc dowolna) jest niebezpieczne. Podatne na SQL injection.
matuty
Cytat(Turson @ 17.02.2014, 11:23:23 ) *
Warto również wspomnieć o
  1. $username = $_GET['gracz'];
  2. $userquery = mysql_query("SELECT * FROM user WHERE login = '$username'");

wstawianie wartości bezpośrednio do zapytania, która może być edytowana przez użytkownika (a więc dowolna) jest niebezpieczne. Podatne na SQL injection.


A jeśli to zrobię tak?
  1. $username = intval($_GET['gracz']);
  2. $userquery = mysql_query("SELECT * FROM user WHERE login = \"'.$username.'\"");
Turson
Najlepiej używać PDO bądź MySQLi.
c4ash
Ale sie Wam temat rozwinal!

PDO to chyba na przyszlosc bedzie. Teraz aby za duzo nie pisac, mozesz zrobic tak jak ja mam.

Wszedzie gdzie mam pobieranie wszelkiego rodzaju danych od usera mam na poczatku include do pliku z funkcjami, a w nim mam:
  1. function clear($text) {
  2. // jeśli serwer automatycznie dodaje slashe to je usuwamy
  3. $text = stripslashes($text);
  4. }
  5. $text = trim($text); // usuwamy białe znaki na początku i na końcu
  6. $text = mysql_real_escape_string($text); // filtrujemy tekst aby zabezpieczyć się przed sql injection
  7. $text = htmlspecialchars($text); // dezaktywujemy kod html
  8. return $text;
  9. }

Potem kazdy jeden wpis traktuje $dane = clear($_GET['dane']);
I po klopocie wink.gif
com
c4ash
Cytat
wystarczy tinyint(1)
a czym to się niby różni od tinyint(22)? to już lepiej BIT(1) smile.gif

  1. // jeśli serwer automatycznie dodaje slashe to je usuwamy
  2. $text = stripslashes($text);
  3. }

O tym już powoli można zapomnieć wink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.