Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] wysylanie linku aktywacyjnego
Forum PHP.pl > Forum > Przedszkole
iwin
Witam

Posiadam instrukcje dodającą wpisane dane do bazy danych ale dodaje ona do jednego pola bazy dokladnie "aktywacja" wartość zero.

  1. <?php
  2. if ($warunekbledu==0)
  3. {
  4. mysql_query("insert into cos tam (`Login`, `Email`, `Haslo`, `Aktywny`) 
  5. values('".Login."', '".$email."', '".$haslo."','0');
  6. echo "Dodano dane. na państwa mail zostanie wysłany mail aktywacyjny";
  7. }
  8. ?>


Chciałbym do tego dodać instrukcje ,która by wysyłała wiadomość mail do na podany adres z linkiem, po którego kliknięciu zamieniana zostaje wartość w po Aktywny z 0 do 1. Nie mam za bardzo pomysłu na to :/ pewnie dlatego ,że jestem raczkowicz w php więc bardzo proszę o pomoc.
dadexix
moja wizja dość prosta....
dodaj pole o nazwie key
Kod
mysql_query("insert into cos tam  (`Login`, `Email`, `Haslo`, `Aktywny`)
values('".Login."', '".$email."', '".$haslo."','0');

zmien na
Kod
$rand = rand(10000,99999);
mysql_query("insert into cos tam  (`Login`, `Email`, `Haslo`, `Aktywny`, `key`)
values('".Login."', '".$email."', '".$haslo."','".$rand."');
mail($email, "Aktywacja", "Aby aktywowac konto uzyj tego linku http://adres.skryptu.aktywujacego?k=".$rand);

skrypt aktywujący

Kod
$sql = mysql_query("select `key` from `cos tam` where key='".$_get['k']."'");
$row = mysql_fetch_array($sql);
if($row[1] == $_get['k']) {mysql_query("update `cos tam` set `Aktywny`='1' where `key`='".$_get['k']"'"; echo "konto aktywowane";}
może być jakiś błąd pisane "zpalca" haha.gif
iwin
wybacz ze tak późno ale dopiero teraz mi sie udało to sprawdzić

wiec email wysyła, dodaje ten key tylko przy klikaniu w aktywacje wyskakuje bład:

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in c:\skrypt2.php on line 8

a tak wyglada moj skrypt:

  1. <?php
  2. $polaczenie = @mysql_connect blablabla
  3.  
  4. $sql = mysql_query("select `Key` from `baza` where Key='".$_get['k']."'");
  5. $row = mysql_fetch_array($sql);
  6. if($row[1] == $_get['k']) {
  7. mysql_query("update `baza` set `Aktywacja`='1' where `Key`='".$_get['k']"'"; 
  8. echo "aktywacja";
  9. }
  10. ?>
shield
Popraw 7ma linijkę, brakuje Ci conajmniej kropki i zamknięcia nawiasu
iwin
ok teraz działa, pisze ,że konto aktywowane ale nie zmienia wpisu Aktywacja na 1 :/ nie wiem zbytnio czemu :/


  1. <?php
  2. $polaczenie = @mysql_connect blablabla
  3.  
  4. $sql = mysql_query("select `Key` from `baza` where Key='".$_get['k']."'");
  5. $row = mysql_fetch_array($sql);
  6. if($row[1] == $_get['k']) {
  7. mysql_query("update `baza` set `Aktywacja`='1' where `Key`='".$_get['k']."'"); 
  8. echo "aktywacja";
  9. }
  10. ?>
iwin
wysyła echo ze zaktualizował ale nie ma w bazie zmienionego wpisu :/. Nie mam pojęcia gdzie tkwi błąd proszę o pomoc.
bah
Cytat(iwin @ 30.11.2007, 17:27:21 ) *
  1. <?php
  2. $polaczenie = @mysql_connect blablabla
  3.  
  4. $sql = mysql_query("select `Key` from `baza` where Key='".$_get['k']."'");
  5. $row = mysql_fetch_array($sql);
  6. if($row[1] == $_get['k']) {
  7. mysql_query("update `baza` set `Aktywacja`='1' where `Key`='".$_get['k']."'"); 
  8. echo "aktywacja";
  9. }
  10. ?>


co to jest to blablabla?
nie powinno tam być zakończenie średnikiem?
reszta wygląda dobrze.
KCG
dodaj do mysql_query() or die(mysql_error()); smile.gif
bah pewnie usunięte dane, byłby błąd składni, a niby wyświetla 'aktywacja' winksmiley.jpg
iwin
tak Bah to są usunięte dane tam jest wszystko ok.

Dodałem to or die, ale nic innego nie robi, wali że aktywowano a za cholerę nie chce zmienić wpisu do bazy sad.gifsad.gifsad.gif proszę pomocy jest to dla mnie bardzo ważne.
KCG
A czy Twoje pole nie nazywa się Aktywny? (pierwszy post)
I jaki to jest typ? VARCHAR czy INT?
iwin
zmieniałem kilka razy to pole ale na pewno się zgadza bo przepisałem je sto razy litera po literze smile.gif.

  1. ALTER TABLE `dane` CHANGE `Aktywacja` `Aktywacja` INT( 10 ) UNSIGNED DEFAULT '0' NOT NULL


ale jak np dla testu dawałem ,żeby zmienił inne dane po kliknięciu w link to tak samo wywalało, że zaktualizowano a nic się w bazie nie zmieniało..
bah
nie wiem czy coś to zmieni, ale czy przy nazwie kolumny daje się apostrof?

tzn.

  1. <?php
  2. $polaczenie = @mysql_connect blablabla
  3.  
  4. $sql = mysql_query("select `Key` from `baza` where Key='".$_get['k']."'");
  5. $row = mysql_fetch_array($sql);
  6. if($row[1] == $_get['k']) {
  7. $sql2 = mysql_query("update `baza` set Aktywacja='1' where Key='".$_get['k']."'"); 
  8. echo "aktywacja";
  9. }
  10. ?>
iwin
jak robię tak jak mówisz to po kliknięciu na link wyskakuje ciekawy komunikat...

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\skrypt2.php on line 6
Something is wrong in your syntax obok 'Key=''' w linii 1
KCG
Jeżeli to INT to dane wprowadzasz bez ' ', zamiast '1' po prostu 1, więc spróbuj tak smile.gif
a przy nazwie kolumn zostaw, jak miałeś `` (to nie są apostrofy tak btw.), bo wtedy mysql rozpoznaje, to jako kolumnę.
iwin
dalej nie chce działać sad.gifsad.gifsad.gif


może jakoś inaczej to rozwiązać?
iwin
dodałem na dole taka formułke

  1. IF($row[1] == $_get['k'])
  2. {
  3. mysql_query("insert into `baza` (`Aktywny`) values('1')");
  4. }
  5.  
  6.  
  7. i tworzy pusty rekord z aktywny 1. więc może błąd jest wyżej tam jak wybiera te tabelki...
mitring
Jeśli nie pomogę to przepraszam winksmiley.jpg

Kiedyś napisałem aktywację, jeśli ktoś może to niech poprawi i zamieści poprawki smile.gif

Link aktywacyjny wygląda u mnie tak:

http://www.strona.com/activation.php?u=1&a...036dbd8313ed055

  1. <?php
  2. if ( isset($_GET['u']) and isset($_GET['a']) ) {
  3.  
  4. @include_once('db_conn.php');
  5.  
  6. $SQL = mysql_query('SELECT USER_HASLO, USER_ACTIVE FROM `uzytkownik` WHERE USER_ID = ' . $_GET['u']);
  7.  
  8. if ( mysql_num_rows($SQL) == 1 ) {
  9. $row = mysql_fetch_assoc($SQL);
  10. if ( !$row['USER_ACTIVE'] == 1 ) {
  11. if ( $_GET['a'] == $row['USER_HASLO'] ) {
  12. mysql_query('UPDATE `uzytkownik` SET USER_ACTIVE = 1 WHERE USER_ID = ' . $_GET['u']);
  13. echo 'Twoje konto zostało aktywowane. Dziękujemy ;)';
  14. }
  15. } else echo 'Twoje konto jest już aktywne.';
  16. } else echo 'Błąd B-101. Nie ma takiego uźytkownika w bazie. Powiadom administratora.';
  17. } else {
  18. echo 'Błąd B-102. Sprawdź link dostarczony w mailu lub powiadom administratora.';
  19. }
  20. ?>


  1. CREATE TABLE `uzytkownik` (
  2. USER_ID int AUTO_INCREMENT NOT NULL,
  3. USER_FIRMAID int NOT NULL DEFAULT '0' COMMENT 'klucz obcy do FIRMA_ID',
  4. USER_LOGIN varchar(50) NOT NULL,
  5. USER_HASLO varchar(32) NOT NULL,
  6. USER_STATUS int NOT NULL DEFAULT '1' COMMENT '0 - admin\r\n1 - user\r\n2 - guest',
  7. USER_ACTIVE int NOT NULL DEFAULT '0' COMMENT '0 - zablokowane konto\r\n1 - konto aktywne',
  8. USER_IMIE varchar(100),
  9. USER_NAZWISKO varchar(100),
  10. USER_ZATRUDNIONY date NOT NULL DEFAULT '0000-00-00',
  11. USER_REGDATE datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  12. USER_LASTLOGIN datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  13. /* Keys */
  14. PRIMARY KEY (USER_ID)
  15. ) ENGINE = MyISAM
  16. CHARACTER SET `utf8` COLLATE `utf8_general_ci`;
  17.  
  18. CREATE UNIQUE INDEX USER_LOGIN ON `uzytkownik`
  19. (USER_LOGIN);
Lion_87
po pierwsze:
<?
$k=$_get['k'];


po drugie:
#############
zmien na
Kod
$rand = rand(10000,99999);
mysql_query("insert into cos tam (`Login`, `Email`, `Haslo`, `Aktywny`, `key`)
values('".Login."', '".$email."', '".$haslo."','".$rand."');
mail($email, "Aktywacja", "Aby aktywowac konto uzyj tego linku [url="http://adres.skryptu.aktywujacego?k=".$rand);
############
raczej tak
Kod
$rand = rand(10000,99999);
mysql_query("insert into cos tam (`Login`, `Email`, `Haslo`, `Aktywny`, `key`)
values('".Login."', '".$email."', '".$haslo."','0','".$rand."');
mail($email, "Aktywacja", "Aby aktywowac konto uzyj tego linku [url="http://adres.skryptu.aktywujacego?k=".$rand);
############

po trzecie :
@$polaczenie = mysql_pconnect("---","---", "---");
if (!$polaczenie) {
echo "Nie udało się nawiązać połączenia z serwerem.";
exit;
}
mysql_select_db("---");
if(!mysql_select_db("---")) {
echo "Nie udało się połączyć z bazą";
exit;
}

$pytanie = "select * from --- where Key= '$k' ";

$result_all = mysql_query($sql_all);
$num_rows_all = mysql_num_rows($result_all);

if ($num_rows_all == 0)
(
echo "Zły klucz aktywacji";
)
if ($num_rows_all == 1)
(

$zapytanie = mysql_query("SELECT * FROM `---` WHERE `key`='$k'");
$wynik = mysql_fetch_array($zapytanie);

$wynikkey=$wynik['key'];

$sql2 = mysql_query("update `---` set Aktywacja='1' where Key='$wynikkey");

echo "Aktywacja przeprowadzona pomyslnie:)";

)
iwin
troszkę się w tym zgubiłem

zrobiłem tak

  1. <?php
  2. $polaczenie = @mysql_connect('bla','bla','bla');
  3. if (!$polaczenie) {
  4. echo "Nie udało się polaczyc z baza.";
  5. }
  6. mysql_select_db("bazadanych");
  7. if(!mysql_select_db("bazadanych")) {
  8. echo "Nie udało się połączyć z bazą";
  9. }
  10.  
  11. $pytanie = mysql_query("select * from baza where Key= '$k' ");
  12.  
  13. $result_all = mysql_query($sql_all);
  14. $num_rows_all = mysql_num_rows($result_all);
  15.  
  16. if ($num_rows_all == 0)
  17. {
  18. echo "Zły klucz aktywacji";
  19. }
  20. if ($num_rows_all == 1)
  21. {
  22.  
  23. $zapytanie = mysql_query("SELECT * FROM `baza` WHERE `key`='$k'");
  24. $wynik = mysql_fetch_array($zapytanie);
  25.  
  26. $wynikkey=$wynik['key'];
  27.  
  28. $sql2 = mysql_query("update `baza` set Aktywny='1' where Key='$wynikkey");
  29.  
  30. echo "Aktywacja przeprowadzona pomyslnie:)";
  31.  
  32. }
  33. ?>


i wywala


Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\usr\krasnal\www\maciek\skrypt2.php on line 16
Zły klucz aktywacji
shield
to chyba nie ma sensu, poprawiasz jeden blad po czym robisz kolejny

sprawdz, te dwie linijki i sprobuj sam znalezc blad
  1. <?php
  2. $pytanie = mysql_query("select * from baza where Key= '$k' ");
  3.  
  4. $result_all = mysql_query($sql_all);
  5. ?>
iwin
Uprzedzałem ,że jestem osobą ,która raczkuje dopiero w php (w końcu jest to dział forum przedszkole). Dlatego też, prosiłem o pomoc, i tę pomoc w miarę bezbłędną ,gdyż przy takich dłuższych i nie do końca dobrze znanych mi ciągach ciężko mi jest sobie poradzić...

gdybym potrafił sam dać rade to bym nie prosił o pomoc i dostawał odpowiedzi typu "poszukaj sobie błędu"...
Lion_87
sorry za błąd musisz zamienić to


  1. <?php
  2. $pytanie = mysql_query("select * from baza where Key= '$k' ");
  3.  
  4. $result_all = mysql_query($sql_all);
  5. ?>


na:

  1. <?php
  2. $pytanie = mysql_query("select * from baza where Key= '$k' ");
  3.  
  4. $result_all = mysql_query($pytanie);
  5. ?>


##
TO CO PONIŻEJ NAPISANE TO PRAWDA:)
KCG
Ja też już się zamotałem, ale:
$pytanie = mysql_query("select * from baza where Key= '$k' ");

$result_all = mysql_query($pytanie);
jest bez sensu :] $result_all jest niepotrzebne, chyba, że $pytanie będzie bez mysql_query, czyli $pytanie="select * from baza where Key= '$k' "; winksmiley.jpg
iwin
nie no wymiekam... mam tak

skrypt3.php

  1. <?php
  2. $polaczenie = @mysql_connect('xx', 'xx, 'xx');
  3. if (!$polaczenie) {
  4. echo "Nie ma kontaktu z sql.";
  5. exit;
  6. }
  7. mysql_select_db("bazadanych");
  8. if(!mysql_select_db("bazadanych")) {
  9. echo "Nie ma połaczenia z baza";
  10. exit;
  11. }
  12. $k=$_GET['k']; 
  13. $pytanie = "select * from baza where Key= '$k' ";
  14.  
  15. $result_all = mysql_query($sql_all);
  16. $num_rows_all = mysql_num_rows($pytanie);
  17.  
  18. if ($num_rows_all == 0)
  19. {
  20. echo "Zły klucz aktywacji";
  21. }
  22. if ($num_rows_all == 1)
  23. {
  24.  
  25. $zapytanie = mysql_query("SELECT * FROM `baza` WHERE `Key`='$k'");
  26. $wynik = mysql_fetch_array($zapytanie);
  27.  
  28. $wynikkey=$wynik['key'];
  29.  
  30. $sql2 = mysql_query("update `baza` set Aktywny='1' where Key='$wynikkey");
  31.  
  32. echo "Aktywacja przeprowadzona pomyslnie:)";
  33.  
  34. }
  35. ?>




formularzyk.php

  1. <?php
  2. $generator = rand(10000,99999);
  3. if (warunki)
  4. {
  5. mysql_query("insert into baza (`Imie`, `Email`, `Aktywny`, `Key`) 
  6. values('".$imie."', '".$email."', '0', '".$generator."')");
  7. echo "Dziękuje, idzie na mail wiadomośc aktywacyjna.";
  8. $subject = "Aktywacja ".$imie.$k;
  9. $headers .= "Content-type: text/html; charset=windows-1250r\n";
  10. $headers .= "From: BLABLABLABLAr\n";
  11. $message = 'kliknij na link aby aktywowac<a href=http://blablabla/skrypt3.php?k=".$generator>LINK</a>';
  12. mail($email, $subject, $message, $headers);
  13. }
  14. ?>


wysyła maila, po kliknieciu na linkt wyskakuje bład


Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\blablabla\skrypt3.php on line 16
Zły klucz aktywacji

nie mam pojęcia co jest nie tak sad.gif

w bazie Imie(text),Emai(text),Aktywny(int),Key(int).

pomocy smile.gif blagam smile.gif
KCG
15 linijka w skrypt 3, ale sam szukaj, bo naprawdę prosty błąd smile.gif
I później nie powtarzaj zapytania, tylko zrób mysql_fetch_array() z pierwszego zapytania, bo przecież one są dokładnie takie same. Albo łatwiej wstaw $k w zapytaniu, bo przecież już ma taką samą wartość, jeśli znalazł taki rekord.
Lion_87
ojeju to już ostatni raz:)


##########tabela
CREATE TABLE blaa(
id int(11) unsigned NOT NULL auto_increment,
imie varchar(100) NOT NULL default ' ',
emai varchar(100) NOT NULL default ' ',
aktywny varchar(1),
klucz varchar(100),
PRIMARY KEY (id)) TYPE=MyISAM;

##########kod
<?
extract($HTTP_GET_VARS);
extract($HTTP_POST_VARS);

$key=$_GET['k'];

@$polaczenie = mysql_pconnect("bla","bla", "bla");
if (!$polaczenie) {
echo "Nie udało się nawiązać połączenia z serwerem.";
exit;
}
mysql_select_db("bla");
if(!mysql_select_db("bla")) {
echo "Nie udało się połączyć z bazą";
exit;
}
$zapytanie = mysql_query("SELECT * FROM `blaa` WHERE `klucz`='$key'");
$num_rows_all = mysql_num_rows($zapytanie);


if ($num_rows_all == "0")
{
echo "Zly kod aktywacji:)";
}
if ($num_rows_all == "1")
{
$link = mysql_connect("bla","bla", "bla") or die ("Nie można nawiązać połączenia.");mysql_select_db("bla");
$query="update `blaa` set aktywny='1' WHERE `klucz`='$key'";
$result= mysql_query($query, $link);

echo "<a href=bla.php?id=my_zmien>Zostales AKTYWOWANY!!!</a>";
}
?>




#############KONIEC
...mam nadzieje:)
KCG
Tylko drugi połączenie z bazą niepotrzebne i weź nazwy tabeli lepiej z małych liter, lub się zdecyduj, bo później takie harce.
iwin
działa smile.gifsmile.gifsmile.gifsmile.gif

błąd był w formularzu :X, nie było jednego " sad.gifsad.gifsad.gif

przepraszam za zamieszanie i jednocześnie bardzo dziękuje smile.gifsmile.gif

potraktuje to jako prezent urodzinowy smile.gif


DZIĘKI!!!!!!!!!!!!!!!!!!!!38
-adam-
czy moglbym prosic o zamieszczenie kompletnego kodu skryptu aktywujacego?
iwin
Cytat(Lion_87 @ 1.12.2007, 17:45:07 ) *
ojeju to już ostatni raz:)
##########tabela
CREATE TABLE blaa(
id int(11) unsigned NOT NULL auto_increment,
imie varchar(100) NOT NULL default ' ',
emai varchar(100) NOT NULL default ' ',
aktywny varchar(1),
klucz varchar(100),
PRIMARY KEY (id)) TYPE=MyISAM;

##########kod skryptu
<?
extract($HTTP_GET_VARS);
extract($HTTP_POST_VARS);

$key=$_GET['k'];

@$polaczenie = mysql_pconnect("bla","bla", "bla");
if (!$polaczenie) {
echo "Nie udało się nawiązać połączenia z serwerem.";
exit;
}
mysql_select_db("bla");
if(!mysql_select_db("bla")) {
echo "Nie udało się połączyć z bazą";
exit;
}
$zapytanie = mysql_query("SELECT * FROM `blaa` WHERE `klucz`='$key'");
$num_rows_all = mysql_num_rows($zapytanie);
if ($num_rows_all == "0")
{
echo "Zly kod aktywacji:)";
}
if ($num_rows_all == "1")
{
$link = mysql_connect("bla","bla", "bla") or die ("Nie można nawiązać połączenia.");mysql_select_db("bla");
$query="update `blaa` set aktywny='1' WHERE `klucz`='$key'";
$result= mysql_query($query, $link);

echo "<a href=bla.php?id=my_zmien>Zostales AKTYWOWANY!!!</a>";
}
?>
tam gdzie bla i nazwy tabel umieszczaj swoje dane
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.