Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak zapisać funkcję jeżeli mail został wysłany.
Forum PHP.pl > Forum > PHP
andegrand2
Witam,

Mam drobny problem, napisałem sobie drobny skrypt z obsługą kodów Dotpay nie mogę sobie poradzić jedynie z napisaniem jednego warunku.
Konkretnie chodzi mi o to że jeżeli kod dotpay został już użyty to zmienia mu w bazie wpis z 'active' na 'inactive'

czyli to:
Kod
mysql_query("UPDATE `codes` SET `status`='inactive'");

Jednak w chwili obecnej robi to jedynie po upływie danego czasu a chce oprócz tego żeby kod był nie aktywny wtedy kiedy system wyśle maila do usera z danymi do rejestracji.

Oto kawałek kodu odpowiedzialnego za wysłanie maila:
  1. if ($mail)
  2. {
  3. $addr = $regmail;
  4. $topic = "SRN Rejestracja";
  5. $tresc = ' ';
  6.  
  7. $admin_email = trim($smtpuser);
  8. $email_from = "From: ".$_SERVER["HTTP_HOST"]." <$admin_email>\n";
  9. $email_reply_to = "Reply-to: $admin_email\n";
  10. $email_return_path = "Return-Path: $admin_email\n";
  11. $headers = (($smtpuser!='')?$email_reply_to . $email_from . $email_return_path:'') . "Message-ID: <" . md5(uniqid(time())) . "@" . $_SERVER["HTTP_HOST"] . ">\nMIME-Version: 1.0\nContent-type: text/" . "html" . "; charset=UTF-8\nContent-transfer-encoding: 8bit\nDate: " . date('r', time()) . "\nX-Priority: 3\nX-MSMail-Priority: Normal\nX-Mailer: PHP\nX-MimeOLE: Produced By SRN\nX-AntiAbuse: User IP - ".$_SERVER["REMOTE_ADDR"]."\n";
  12.  
  13. if ($mail==1)
  14. $result = @mail($addr, $topic, $tresc, $headers);
  15. else if ($mail==2) {
  16. include_once('smtp.php');
  17. $result = smtpmail($addr, $topic, $tresc, $headers);
  18. }
  19. }
  20. echo 'Użytkownik stworzony. '.(($mail)?'Na podany email zostało wysłane hasło.':'').'</td></tr>
  21. <tr><td><a href="'.$_SERVER["PHP_SELF"].'">Zaloguj</a>';
  22. }
  23. }


Będę bardzo wdzięczny za pomoc.
tehaha
a nie możesz tego po prostu wstawić przed
?
XianN
  1. if ($mail)
  2. {
  3. $addr = $regmail;
  4. $topic = "SRN Rejestracja";
  5. $tresc = ' ';
  6.  
  7. $admin_email = trim($smtpuser);
  8. $email_from = "From: ".$_SERVER["HTTP_HOST"]." <$admin_email>\n";
  9. $email_reply_to = "Reply-to: $admin_email\n";
  10. $email_return_path = "Return-Path: $admin_email\n";
  11. $headers = (($smtpuser!='')?$email_reply_to . $email_from . $email_return_path:'') . "Message-ID: <" . md5(uniqid(time())) . "@" . $_SERVER["HTTP_HOST"] . ">\nMIME-Version: 1.0\nContent-type: text/" . "html" . "; charset=UTF-8\nContent-transfer-encoding: 8bit\nDate: " . date('r', time()) . "\nX-Priority: 3\nX-MSMail-Priority: Normal\nX-Mailer: PHP\nX-MimeOLE: Produced By SRN\nX-AntiAbuse: User IP - ".$_SERVER["REMOTE_ADDR"]."\n";
  12.  
  13. if ($mail==1)
  14. $result = @mail($addr, $topic, $tresc, $headers);
  15. else if ($mail==2) {
  16. include_once('smtp.php');
  17. $result = smtpmail($addr, $topic, $tresc, $headers);
  18. }
  19. ///////////////////////////////////////////////////////////////////////////////
  20. if ($result) {
  21. mysql_query("UPDATE `codes` SET `status`='inactive'"); // btw: nie brakuje tutaj czasem czegos w stylu WHERE id=$jakies_id ? ;)
  22. }
  23. ///////////////////////////////////////////////////////////////////
  24. }
  25. echo 'Użytkownik stworzony. '.(($mail)?'Na podany email zostało wysłane hasło.':'').'</td></tr>
  26. <tr><td><a href="'.$_SERVER["PHP_SELF"].'">Zaloguj</a>';
  27. }
  28. }


Będę bardzo wdzięczny za pomoc.
[/quote]
andegrand2
Dzięki bardzo koledzy za pomoc smile.gif Wszystko działa prosta sprawa w sumie ale jakoś ciężko ostatnio myślę.

Mam jeszcze jedno pytanie o ile można. Mam listę 3000 kodów Dotpay zapisaną w pliku txt jeden kod pod drugim i mam taki układ bazy mysql:

Kod
CREATE TABLE `codes` (
   `id` int(11) NOT NULL auto_increment,
   `code` varchar(8) NOT NULL default '',
   `status` varchar(25) NOT NULL default 'active',
   `expired` varchar(255) NOT NULL default '0',
   PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1;


Chciałbym jakoś to wklepać do mysql tzn kod w miejsce 'code', 'id' ma lecieć po kolei, status standardowy czyli 'active a expired '0'.

Pozdrawiam
krowal
  1. <?php
  2. //wczytujesz kody z pliku do tablicy o postaci array(kod1, kod2, kod3, ... ,kodN);
  3. foreach($tablica_z_kodami as $kod){
  4. mysql_query("INSERT INTO codes (code) VALUES ('$kod')"); //wg. opisu tabeli reszta danych rekordu powinna zostać uzupełniona automatycznie
  5. }
  6. ?>
ferrero2
No to albo przez phpmy admina poprzez import pliku txt.
Albo przez www, pobrać zawartość pliku do tablicy a później najprostrzy
INSERT do tabeli (w insercie nie podajesz pola auto_increment, reszta w kolejności).
andegrand2
No cóż znów bardzo dziękuję bo wszystko działa smile.gif

Jednak jeszcze mam mały problem a mianowicie po wysłaniu maila status na inactive zmienia mi we wszystkich kodach bo mam tak:

  1. ///////////////////////////////////////////////////////////////////////////////
  2. if ($result) {
  3. mysql_query("UPDATE `codes` SET `status`='inactive'");
  4. }
  5. ///////////////////////////////////////////////////////////////////


Próbowałem tak:

  1. ///////////////////////////////////////////////////////////////////////////////
  2. if ($result) {
  3. mysql_query("UPDATE `codes` SET `status`='inactive' WHERE `code`='".$_POST['check']."'");
  4. }
  5. ///////////////////////////////////////////////////////////////////


Ale bez rezultatu wtedy nic mi nie zmienia.

Przepraszam że tak truje smile.gif

Pomoże ktoś ? smile.gif
Bo już mi ręce opadają tongue.gif

Próbowałem jeszcze takiego czegoś

  1. $id = "SELECT * FROM `codes` WHERE `code`='".$_POST['check']."' AND `status`='active' LIMIT 1";
  2.  
  3. if ($result) {
  4. mysql_query("UPDATE `codes` SET `status`='inactive' WHERE `code`='.$id.'");
  5.  
futura
Cytat
mysql_query("UPDATE `codes` SET `status`='inactive' WHERE `code`='.$id.'");


Pod zmienną $id masz wynik z bazy w postaci tablicy.

Powinno być $id['code'].
andegrand2
  1.  
  2. $id = "SELECT * FROM `codes` WHERE `code`='".$_POST['check']."' AND `status`='active' LIMIT 1";
  3.  
  4. if ($result) {
  5. mysql_query("UPDATE `codes` SET `status`='inactive' WHERE `code`='".$id['code']."'");
  6. }
  7.  


Mam tak ale dalej nic nie wykonuje.
futura
Cytat
$id = "SELECT * FROM `codes` WHERE `code`='".$_POST['check']."' AND `status`='active' LIMIT 1";


Powinno być:

$id = mysql_query("SELECT * FROM `codes` WHERE `code`='".$_POST['check']."' AND `status`='active' LIMIT 1");
andegrand2
Dzięki bardzo ale dalej nic z tego chyba wiem o co chodzi. Formularz jest w pliku pay.html który później wykonuje plik skrypt.php a warunek jest w pliku /pages/register.php

Co ja mogę z tym zrobić bo include nic nie daje smile.gif?
futura
Przenieś z pliku register.php warunek albo całość do skrypt.php. Musisz to scalić wszystko w jedno. Na jednej stronie masz formularz, który wykonuje jakiś skrypt, w którym masz sprawdzanie i wszystkie warunki. Jak nie wiesz nadal o co chodzi to pokaż źródła plików.
andegrand2
To jest skrypt.php

  1. <?
  2. function Polacz() {
  3. $baza = array(
  4. 'db_host' => 'localhost',
  5. 'db_user' => 'zamojski_nicki',
  6. 'db_pass' => 'nicki1',
  7. 'db_name' => 'zamojski_nicki',
  8. );
  9. if($pol) {
  10. return $pol;
  11. } else {
  12. $pol = mysql_connect("$baza[db_host]","$baza[db_user]","$baza[db_pass]");
  13. if (!$pol || !mysql_select_db("$baza[db_name]",$pol)) {
  14. die ('Problem z baza danych'); return 0;
  15. } else { return $pol; }
  16. }
  17. }
  18.  
  19. function ciasteczko($czas_zycia)
  20. {
  21. if (!isset($_COOKIE['ActiveCode']))
  22. {
  23. setcookie('ActiveCode',1, time()+$czas_zycia);
  24. }
  25. else
  26. {
  27. setcookie('ActiveCode',0, time()+2, "/");
  28. setcookie('ActiveCode',1, time()+$czas_zycia, "/");
  29. }
  30. }
  31.  
  32.  
  33. $page = "main.php"; //adres strony, ktora ma byc otwarta
  34. //po poprawnej weryfikacji kodu
  35.  
  36. Polacz();
  37.  
  38. ############################# SKRYPT DO SPRAWDZANIA KODU #############################
  39.  
  40. $now = time();
  41. $czas_zycia = 86400; // czas dostepu po wprowadzeniu kodu w sekundach
  42.  
  43.  
  44. $res = "SELECT * FROM `codes` WHERE `code`='".$_POST['check']."' AND `status`='active' LIMIT 1";
  45. $odp = mysql_query("$res");
  46. $r = mysql_fetch_array($odp);
  47. $new_time = $now+$czas_zycia;
  48. if (mysql_num_rows($odp) == 0)
  49. {
  50. include "sprawdzacz.php"; //sprawdzenie, czy klient ma prawo jeszcze przeglądać strony z części płatnej
  51.  
  52. define('IN_SRN', true);
  53.  
  54. if ( !file_exists("config.php") )
  55. {
  56. header("Location:setup.php");
  57. exit();
  58. } else {
  59. require("config.php");
  60. }
  61.  
  62. include("header.php");
  63. ?>
  64.  
  65. <b><font color="red">Wpisany kod jest niepoprawny.</font><a href="http://nicki.cs-zamojski.pl/index.php?page=pay"> Wróć</a> i popraw formularz !</b>
  66.  
  67. <?php
  68. include("footer.php");
  69.  
  70. }
  71.  
  72. else {
  73. if($r['expired'] == 0)
  74. {
  75. // jesli kod jeszcze nie byl uzywany sprawdza to sobie i zmienia mu czas, ze bedzie aktywny jeszcze przez godzine
  76. mysql_query("UPDATE `codes` SET `expired`='".$new_time."' WHERE `code`='".$_POST['check']."'");
  77. // i w tym miejscu przekierowanie do platnej czesci serwisu
  78. ciasteczko($czas_zycia);
  79. header("Location: ".$page);
  80. }
  81. elseif ($r['expired'] >= $now)
  82. {
  83. // tutaj sprawdza czy kod przekroczyl juz swoj czas aktywnosci i jesli nie to znowu przekierowanie do platnej czesci serwisu
  84. ciasteczko($czas_zycia);
  85. header("Location: ".$page);
  86. }
  87. else
  88. {
  89. // tutaj juz kod stracil swoja aktywnosc i update bazy na kod nieaktywny
  90. mysql_query("UPDATE `codes` SET `status`='inactive' WHERE `code`='".$_POST['check']."'");
  91. // i komuunikat ze koniec czasu
  92. echo "Koniec czasu<BR><BR>";
  93. }
  94. }
  95.  
  96. ?>




a to register.php

  1. <?php
  2. include "http://nicki.cs-zamojski.pl/sprawdzacz.php"; //sprawdzenie, czy klient ma prawo jeszcze przeglądać strony z części płatnej
  3.  
  4. if ( !defined('IN_SRN') )
  5. {
  6. die("Hacking attempt");
  7. }
  8.  
  9. if ($regactive)
  10. {
  11. $datas_ok = 1;
  12. if (!isset($_POST['reglogin']) || (!$mail && (!isset($_POST['regpass']) || !isset($_POST['regpass2']))) || !isset($_POST['regmail']))
  13. {
  14. $datas_ok = 0;
  15. }
  16.  
  17. if ($captcha)
  18. {
  19. require_once('recaptchalib.php');
  20. $resp = null;
  21. $error = null;
  22. }
  23. if ($_POST["recaptcha_response_field"])
  24. {
  25. $resp = recaptcha_check_answer ($privatekey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]);
  26. }
  27.  
  28. if (!($resp->is_valid))
  29. {
  30. $error = $resp->error;
  31. }
  32.  
  33.  
  34. $reglogin = $_POST['reglogin'];
  35. if (!$mail)
  36. {
  37. $regpass = $_POST['regpass'];
  38. $regpass2 = $_POST['regpass2'];
  39. }
  40.  
  41. $regmail = str_replace("'", "`", $_POST['regmail']);
  42.  
  43. if (preg_match("/[^0-9a-zA-Z]/", $reglogin)) {
  44. $datas_ok = 0;
  45. echo " Niedozwolone znaki w nicku";
  46. $reglogin = preg_replace("/[^0-9a-zA-Z]/", "", $reglogin);
  47. }
  48.  
  49. if (!$mail)
  50. {
  51. if (isset($_POST['regpass']) && strlen($regpass)<4)
  52. {
  53. $datas_ok = 0;
  54. echo " Hasło za krótkie";
  55. }
  56. if ($regpass != $regpass2)
  57. {
  58. $datas_ok = 0;
  59. echo " Hasła nie zgadzają się";
  60. }
  61. } else {
  62. $regpass = '';
  63. for ($i=0; $i<10; $i++)
  64. {
  65. $regpass .= chr(rand(33,126));
  66. }
  67. }
  68.  
  69. if (isset($_POST['regmail']) && !preg_match("/^[^0-9][A-z0-9_]+([.][A-z0-9_]+)*[@][A-z0-9_]+([.][A-z0-9_]+)*[.][A-z]{2,4}$/", $regmail)) {
  70. $datas_ok = 0;
  71. echo " Niewłaściwy email";
  72. }
  73.  
  74. if ($captcha)
  75. {
  76. if ($_POST["recaptcha_response_field"])
  77. {
  78. if (($resp->is_valid)!=TRUE)
  79. {
  80. $error = $resp->error;
  81. //echo " Bląd Captcha";
  82. $datas_ok = 0;
  83. }
  84. } else {
  85. $datas_ok = 0;
  86. }
  87. }
  88. if ($reglogin!='' && (($mail && $regpass!='') || (!$mail)) && $regmail!='' && $datas_ok)
  89. {
  90. if (!$link)
  91. {
  92. $link = @mysql_connect($db_host, $db_username, $db_passwd);
  93. $db_selected = @mysql_select_db($db_name, $link);
  94. }
  95.  
  96. echo '<table id="srn" width="80%"><tr><td>';
  97.  
  98. if (mysql_num_rows(@mysql_query("SELECT `id` FROM srn_users wHERE `nick`='".$reglogin."'")))
  99. {
  100. echo 'Błąd. Taki użytkownik już istnieje</td></tr>
  101. <tr><td><a href="'.$_SERVER["PHP_SELF"].'?page=register">Spróbuj ponownie</a>';
  102. } else if (mysql_num_rows(@mysql_query("SELECT `id` FROM srn_users wHERE `mail`='".$regmail."'")))
  103. {
  104. echo 'Błąd. Ten mail już jest używany, użyj innego.</td></tr>
  105. <tr><td><a href="'.$_SERVER["PHP_SELF"].'?page=register">Spróbuj ponownie</a>';
  106. } else {
  107. $result = @mysql_query("INSERT INTO srn_users VALUES ('', '".$reglogin."', '".md5($regpass)."', '".$regmail."', '3')");
  108.  
  109. if (!$result) {
  110. echo 'Błąd. Nie można było stowrzyć użytkownika</td></tr>
  111. <tr><td><a href="'.$_SERVER["PHP_SELF"].'?page=register">Spróbuj ponownie</a>';
  112. } else {
  113. if ($mail)
  114. {
  115. $addr = $regmail;
  116. $topic = "SRN Rejestracja";
  117. $tresc = '<h1>Witaj</h1><br>
  118. Właśnie zarejestrowałeś się w [S]ystemie [R]ezerwacji [N]icków <a href="http://'.$_SERVER["HTTP_HOST"].$_SERVER["PHP_SELF"].'"> by '.$_SERVER["HTTP_HOST"].'</a><br><br>
  119. Twoje dane to:
  120. <h3>Login: '.$reglogin.'<br>
  121. Hasło: '.$regpass.'</h3><br>
  122. Hasło możesz zmienić po zalogowaniu.<br><br>
  123. Pozdrawiamy CS-Zamojski.pl !<br><br>';
  124.  
  125. $admin_email = trim($smtpuser);
  126. $email_from = "From: ".$_SERVER["HTTP_HOST"]." <$admin_email>\n";
  127. $email_reply_to = "Reply-to: $admin_email\n";
  128. $email_return_path = "Return-Path: $admin_email\n";
  129. $headers = (($smtpuser!='')?$email_reply_to . $email_from . $email_return_path:'') . "Message-ID: <" . md5(uniqid(time())) . "@" . $_SERVER["HTTP_HOST"] . ">\nMIME-Version: 1.0\nContent-type: text/" . "html" . "; charset=UTF-8\nContent-transfer-encoding: 8bit\nDate: " . date('r', time()) . "\nX-Priority: 3\nX-MSMail-Priority: Normal\nX-Mailer: PHP\nX-MimeOLE: Produced By SRN\nX-AntiAbuse: User IP - ".$_SERVER["REMOTE_ADDR"]."\n";
  130.  
  131. if ($mail==1)
  132. $result = @mail($addr, $topic, $tresc, $headers);
  133. else if ($mail==2) {
  134. include_once('smtp.php');
  135. $result = smtpmail($addr, $topic, $tresc, $headers);
  136.  
  137. }
  138.  
  139. $id = mysql_query("SELECT * FROM `codes` WHERE `code`='".$_POST['check']."' AND `status`='active' LIMIT 1");
  140.  
  141. if ($result) {
  142. mysql_query("UPDATE `codes` SET `status`='inactive' WHERE `code`='".$id['code']."'");
  143. }
  144.  
  145.  
  146. }
  147.  
  148.  
  149.  
  150. echo 'Użytkownik stworzony. '.(($mail)?'Na podany email zostało wysłane hasło.':'').'</td></tr>
  151. <tr><td><a href="http://nicki.cs-zamojski.pl">Zaloguj</a>';
  152. }
  153. }
  154. echo '</td></tr></table>'."\n";
  155. } else if (!$datas_ok) {
  156. echo '<form method="POST" action="'.$_SERVER["PHP_SELF"].'?page=pay">
  157. <table id="srn" width="80%">
  158. <tr>
  159. <td width="30%">login: </td>
  160. <td class="t" width="70%"> <input type="text" name="reglogin" size="60" value="'.htmlspecialchars($reglogin).'"></td>
  161. </tr>';
  162.  
  163. if (!$mail)
  164. {
  165. echo '<tr>
  166. <td width="30%">hasło: </td>
  167. <td class="t" width="70%"> <input type="password" name="regpass" size="60" value="'.htmlspecialchars($regpass).'"></td>
  168. </tr>
  169. <tr>
  170. <td width="30%">powtórz hasło: </td>
  171. <td class="t" width="70%"> <input type="password" name="regpass2" size="60" value="'.htmlspecialchars($regpass2).'"></td>
  172. </tr>';
  173. }
  174.  
  175. echo '<tr>
  176. <td width="30%">email: </td>
  177. <td class="t" width="70%"> <input type="text" name="regmail" size="60" value="'.htmlspecialchars($regmail).'"></td>
  178. </tr>';
  179. if ($captcha)
  180. {
  181. echo '<tr>
  182. <td colspan="2"><div id="srn"><center>'.recaptcha_get_html($publickey, $error).'</center></div></td>
  183. </tr>';
  184. }
  185. echo '<tr>
  186. <td colspan="2"><button type="submit">Zarejestruj</button></td>
  187. </tr>
  188. <tr>
  189. <td colspan="2">Uwaga: W Loginie dozwolone są tylko małe i duże litery oraz cyfry.</td>
  190. </tr>
  191. <tr>
  192. <td colspan="2"><a href="http://nicki.cs-zamojski.pl">Powrót do logowania</a></td>
  193. </tr>
  194. </table>
  195. </form>';
  196. }
  197. } else {
  198. echo "Rejestracja wyłączona";
  199. }
  200. ?>
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.