phpRS help fórum : phpRS Fórum
Hlavní diskuzní phpRS fórum. Najdete zde odpovědi na otázky týkající se provozu a instalace phpRS systému.
phpRS - redakční a informační systém
pomoc s predavanim dat mezi strankami
Zaslán uživatelem/kou: mr3ska (IP adresa zaznamenána)
Datum: 2007-08-08, 09:45

tak uz nevim jak to mam udelat a tak bych Vas chtel pozadat o pomoc. Jde mi o nasledujici:

v kforu bych chtel udelat pod nickem zasilatele postu odkaz "POSLAT MAIL" a ten bych vytvoril cca nejak takhle:
emailme.php?akce=odeslatnova_".$dotazautpm."
a potreboval bych kdyz se vytvori odkaz treba
emailme.php?akce=odeslatnova_tomas
aby se mi ve formulari pro odesilani mailu do okna adresat prehodilo to "tomas" na konci toho odkazu nebo neco podobnyho, nevim jak to udelat vubec

zkousim to tady a nedari se mi - stacilo kdyby mi nekdo poradil podle ceho to hledat na netu - nakej navod nebo tak, ja bych si to rad zbastlil sam ;-)




Celkem upraveno 1×. Poslední úprava mr3ska v 08.08.2007 09:52.

Re: pomoc s predavanim dat mezi strankami
Zaslán uživatelem/kou: zdenekh (IP adresa zaznamenána)
Datum: 2007-08-08, 11:00

Tak toho adresata posílej normáně jako samostatnou proměnou adresat:

emailme.php?akce=odeslatnova&adresat=".$dotazautpm."

Pak ve funkci, kde vypisuješ ten formulář, to narveš jako value u inputu, kde se má objevit ten adresát. Jo a musíš k tomu přistupovat jako ke globální proměnné....

Pomocí & v podstatě můžeš naházet do odkazu libovolné množství proměnných, jen je tím oddělíš........

T. O. Severka Děčín | New r.č. | Old Good Tom | Jinak už v tom nefrčím... :-)



Celkem upraveno 1×. Poslední úprava zdenekh v 08.08.2007 15:33.

Re: pomoc s predavanim dat mezi strankami
Zaslán uživatelem/kou: zdenekh (IP adresa zaznamenána)
Datum: 2007-08-08, 11:09

Jinak mě tak napadá, že na rozsekání obsahu proměnné je funkce explode. Mrkni do manuálu php a taky to použil Michálek v bloku galerie pro název........

T. O. Severka Děčín | New r.č. | Old Good Tom | Jinak už v tom nefrčím... :-)

Re: pomoc s predavanim dat mezi strankami
Zaslán uživatelem/kou: mr3ska (IP adresa zaznamenána)
Datum: 2007-08-08, 23:09

jo děkuju - odkaz bych právě vytvořit uměl, jenže nevim když se odkaz vytvoří v souboru forum.php tak jak potom v emailme.php definovat že právě třeba to
adresat=karel otevře mailform s příjemcem karel a teď mě napadá že nevim jak to udělat, když někdo má nick nebo jméno zadaný s mezerou :-(

no jdu zkoumat manuál ptž v tomhle jsem jaksi jako ryba na suchu zatim, ale jak je známo každý někdy začínal že...

Re: pomoc s predavanim dat mezi strankami
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2007-08-09, 00:44

mr3ska napísal/a:
-------------------------------------------------------
> jo děkuju - odkaz bych právě vytvořit uměl, jenže
> nevim když se odkaz vytvoří v souboru forum.php
> tak jak potom v emailme.php definovat že právě
> třeba to
> adresat=karel otevře mailform s příjemcem karel a
> teď mě napadá že nevim jak to udělat, když někdo
> má nick nebo jméno zadaný s mezerou :-(
>
> no jdu zkoumat manuál ptž v tomhle jsem jaksi jako
> ryba na suchu zatim, ale jak je známo každý někdy
> začínal že...

pozri na problematiku HTML formulárov, mrkni na metódy ich odosielania (POST, GET)
spracovanie POSTu v emailme.php
define('IN_CODE',true);
include_once("config.php"); 

if (!empty($GLOBALS['adresat'])) {
// odoslanie mailu s nastavenim prijemcu podla obsahu premennej $GLOBALS['adresat']
// osobne by som bral zo vstupu len číselný identifikátor príjemcu a jeho email aj meno by som vytiahol z databázy až na tomto mieste
}

medzeru do odkazu dostaneš pomocou %20 napríklad použitím funkcie urlencode ale keď medzeru dáš aj nezakódovanú, fungovať to bude. Ak ťa to zaujíma pozri RFC1738 bod 2.2

Re: pomoc s predavanim dat mezi strankami
Zaslán uživatelem/kou: mr3ska (IP adresa zaznamenána)
Datum: 2007-08-09, 10:31

takze ted to mam takhle: v kforu je standartne tohle

$dotazaut=phprs_sql_query("select idc,prezdivka from ".$rspredpona."ctenari where idc='".phprs_sql_Result($dotazfrumpst,$pom,"postautor")."'",$dbspojeni);

jestli to dobre chapu tak jsem si doplnil

$dotazautpm=phprs_sql_Result($dotazaut,0,"idc");

takze odkaz by mel vypadat takhle

<a href=\"emailme.php?akce=odeslatnova&adresat=".$dotazautpm."\">

a pak teda v emailme.php musim udelat dotaz kde to z tabulky rs_ctenari vytahne mail pro "where idc='adresat'" nejak takhle asi

$autidc=$_GET["adresat"];
$adresatidcmail=phprs_sql_query("select idc,email from ".$rspredpona."ctenari where idc='$autidc'",$dbspojeni);


a to pak doplnim jako VALUE do toho formulare value="'.$adresatidcmail.'"nebo se pletu? ted totiz ani nevim jak to pak dostanu do toho CASE na konci souboru to odeslatnova&adresat=idc. - radsi si jdu neco o tom precist na netu ptz moudrej z toho nejsem

PS: nekamenujte me, php nerozumim O:-)

diky za vase rady a vas cas



Celkem upraveno 5×. Poslední úprava mr3ska v 09.08.2007 12:24.

Re: pomoc s predavanim dat mezi strankami
Zaslán uživatelem/kou: zdenekh (IP adresa zaznamenána)
Datum: 2007-08-09, 13:17

Jen tak bleskově....... Nepleteš se, podstatu jsi pobral správně;) Určitě se tomu dostaneš na kobylku......

T. O. Severka Děčín | New r.č. | Old Good Tom | Jinak už v tom nefrčím... :-)

Re: pomoc s predavanim dat mezi strankami
Zaslán uživatelem/kou: mr3ska (IP adresa zaznamenána)
Datum: 2007-08-09, 14:56

no tak v tom foru uz to mam v pohode no, vygeneruje mi to odkaz cca takovejhle:
emailme.php?akce=odeslatnovaid&adresat=id_ctenare
ale nevim jak teda dal.....

v emailme.php mam na konci ten switch ve kterym je napriklad:
switch ($GLOBALS['akce']):
case "odeslatnova": odeslatnova(); break;
case "odesilamnovou": odesilamnovou(); break;
default: uvod(); break;
endswitch;

a do nej potrebuju nejak dostat to odeslatnovaid&adresat='.$autidc.' ale nevim jak, bude stacit to takle napsat?
case "odeslatnovaid&adresat='.$GLOBALS["komu"].'": odeslatnova_aut(); break;
asi ne co? nebo staci zadat
case "odeslatnovaid": odeslatnova_aut(); break; ?????


ve funkci odeslatnova_aut () to mam takhle:

$autidc=$_GET["adresat"];
$adresatidcmail=phprs_sql_query("select idc,email from ".$rspredpona."ctenari where idc=".$autidc."",$dbspojeni);

a v tom FORMu pak tohle:

<tr class=\"z\"><td>Komu:</td><td><input type=\"text\" size=\"25\" name=\"komu\" class=\"textpole\" value=\"".adresatidcmail."\"/></td></tr>

ale nefunguje to, poradite?



Celkem upraveno 2×. Poslední úprava mr3ska v 09.08.2007 15:17.

Re: pomoc s predavanim dat mezi strankami
Zaslán uživatelem/kou: zdenekh (IP adresa zaznamenána)
Datum: 2007-08-09, 18:21

Předpokládám, že funkce odeslatnova() vytváří ten form. Tak ten switch nech takhle:
switch ($GLOBALS['akce']):
case "odeslatnova": odeslatnova(); break;
case "odesilamnovou": odesilamnovou(); break;
default: uvod(); break;
endswitch;


a pak přímo v tý funkci odeslatnova zpracuj tu zaslanou proměnou, jak je uvedeno. Jen bych místo get použil GLOBALS. Ještě z db stačí vybrat jen ten mejl. Tj. takhle by to mělo v té funkci přibližně vypadat:

$autidc=$GLOBALS["adresat"];

$adresatidcmail=phprs_sql_query("select email from ".$GLOBALS["rspredpona"]."ctenari where idc='$autidc'",$GLOBALS["dbspojeni"]); 

$emailadr=mysql_Result($adresatidcmail,0,"email");

echo "<tr class=\"z\"><td>Komu:</td><td><input type=\"text\" size=\"25\" name=\"komu\" class=\"textpole\" value=\"".adresatidcmail."\"/></td></tr>";


T. O. Severka Děčín | New r.č. | Old Good Tom | Jinak už v tom nefrčím... :-)



Celkem upraveno 1×. Poslední úprava zdenekh v 09.08.2007 18:26.

Re: pomoc s predavanim dat mezi strankami
Zaslán uživatelem/kou: zdenekh (IP adresa zaznamenána)
Datum: 2007-08-09, 18:24

Jo a do toho odkazu dej akce=odeslatnova&adresat=id_ctenare, tak jak už to máš jen s jinou akcí.........

T. O. Severka Děčín | New r.č. | Old Good Tom | Jinak už v tom nefrčím... :-)



Celkem upraveno 1×. Poslední úprava zdenekh v 09.08.2007 18:28.

Re: pomoc s predavanim dat mezi strankami
Zaslán uživatelem/kou: mr3ska (IP adresa zaznamenána)
Datum: 2007-08-09, 19:55

jak na to koukam, mel jsem to skoro dobre - ale ted z nejakyho duvodu se mi nevypise mail ale text "RESOURCE ID #cislo" a ke vsemu kdyz dam treba i jinyho uzivatele mam tam stale to predchozi



Celkem upraveno 1×. Poslední úprava mr3ska v 09.08.2007 19:58.

Re: pomoc s predavanim dat mezi strankami
Zaslán uživatelem/kou: zdenekh (IP adresa zaznamenána)
Datum: 2007-08-09, 20:21

Resource id......... to je nezpracovaný dotaz z db, musíš ho napřed zpracovat např. tím mysql_result............

T. O. Severka Děčín | New r.č. | Old Good Tom | Jinak už v tom nefrčím... :-)

Re: pomoc s predavanim dat mezi strankami
Zaslán uživatelem/kou: mr3ska (IP adresa zaznamenána)
Datum: 2007-08-09, 21:11

ehm, no to sem ale id*ot - sem zadal do vypisu spatnou vec

omlouvam se, ale chel bych ti podekovat za pomoc. proto mam rad tohle forum, kdyz si nevim rady a nenajdu to tu vyreseny vzdy je nekdo kdo si udela chvilicku a nam v php zacinajicim poradi. opravdu dekuju moc

a navic zase jsme se naucil neco novyho ;-)



Celkem upraveno 1×. Poslední úprava mr3ska v 09.08.2007 21:12.

Re: pomoc s predavanim dat mezi strankami
Zaslán uživatelem/kou: zdenekh (IP adresa zaznamenána)
Datum: 2007-08-09, 21:54

Není zač.......... ;-)

T. O. Severka Děčín | New r.č. | Old Good Tom | Jinak už v tom nefrčím... :-)

Re: pomoc s predavanim dat mezi strankami
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2007-08-10, 01:54

$autidc=(int)$GLOBALS["adresat"];
$adresatidcmail=phprs_sql_query("select idc,email from ".$rspredpona."ctenari where idc='$autidc'",$dbspojeni);

Len zbežne - tu je namieste byť opatrný. Funkcia (int) zabezpečí ochranu pred SQL injection, nepustí to vykonať dotaz na databázu s podstrčeným kódom z URL. Ak skladáš SQL dotaz, je nutné mysieť na to, že časť dotazu berieš z URL a táto časť môže mať neočakávaný obsah ;-) Vieme, že čakáme číslo, takže funkciou (int) si zaistíme to, že nám nič iné ako číslo zo vstupu do SQL príkazu neprejde. Dobrým zvykom je spraviť pred vykonaním SQL dotazu overenie obsahu a v prípade problému zareagovať.
if (isset($GLOBALS['adresat']) && (ereg("^[0-9]+$",$GLOBALS['adresat']))) {
    // vstup je cislo, vsetko je OK, zlozim dotaz a vykonam SQL
} else {
    // nieco sa deje, na vstupe nie je ocakavana hodnota (cislo)
    // zastavim beh scriptu, vypisem nejaky error a dalej sa nebavim, pripadne vykonam nieco ine
    die('input error');
}


Prečo $GLOBALS miesto $_GET? To už je trocha zložitejšie, ale v princípe preto, aby pri zapnutom automatickom escapovaní vstupu nevznikalo dvojité zbytične escapovanie vstupných reťazcov. V phpRS máš GET/POST vopred spracovaný, deje sa to použitím include("config.php");. Ide o to, že php je možné nastaviť v konfigurácii tak, aby vstup automaticky escapoval - tzv. magic_quotes. phpRS ti to escapovanie zjednotí a nemusíš sa starať o testy nastavenia serveru (magic_quotes_gpc) - staráš sa len o kontrolu hodnôt a správne escapovanie vstupného reťazca pomocou phprs_sql_real_escape_string, kód by mohol vyzerať takto:
$autidc=phprs_sql_real_escape_string($GLOBALS["adresat"]);



Ak by si chcel použiť vstup priamo z $_GET / $_POST, vyzeralo by to takto:
<?php
echo get_magic_quotes_gpc();        // 1
echo $_POST['lastname'];            // O\'reilly
echo addslashes($_POST['lastname']); // O\\\'reilly

if (!get_magic_quotes_gpc()) {
   $lastname = addslashes($_POST['lastname']);
} else {
   $lastname = $_POST['lastname'];
}

echo $lastname; // O\'reilly
$sql = "INSERT INTO lastnames (lastname) VALUES ('$lastname')";
?>

Re: pomoc s predavanim dat mezi strankami
Zaslán uživatelem/kou: mr3ska (IP adresa zaznamenána)
Datum: 2007-08-10, 15:51

takze tohle:

if (isset($GLOBALS['adresat']) && (ereg("^[0-9]+$",$GLOBALS['adresat']))) {
// vstup je cislo, vsetko je OK, zlozim dotaz a vykonam SQL
} else {
// nieco sa deje, na vstupe nie je ocakavana hodnota (cislo)
// zastavim beh scriptu, vypisem nejaky error a dalej sa nebavim, pripadne vykonam nieco ine
die('input error');
}

bych mel dat jeste pred toto:

$autidc=$GLOBALS["adresat"];
$adresatmail=phprs_sql_query("select email from ".$GLOBALS["rspredpona"]."ctenari where idc='$autidc'",$GLOBALS["dbspojeni"]);
$mailadr=phprs_sql_Result($adresatmail,0,"mail");

a nebo to mam udelat takhle? ted si nejsem jistej:

if (isset($GLOBALS['adresat']) && (ereg("^[0-9]+$",$GLOBALS['adresat'])))
{
cely obsah funkce
}
else
{
napriklad echo se zpravou o chybe
die('input error');
}

teda jestli to dobre chapu v podstate mi to overi jestli jsem jako hodnotu adresat obdrzel cislo a ne cokoliv jineho a pokud tam bude neco jineho vyhodi mi to "INPUT ERROR" (kdyxz bude cislo povoli to provest dotaz na databazi) a misto input error bych si to mohl zpracovat aby mi to vyhodilo treba nejaky text v te strance jestli tomu dobre rozumim 8-)



Celkem upraveno 3×. Poslední úprava mr3ska v 10.08.2007 16:08.

Re: pomoc s predavanim dat mezi strankami
Zaslán uživatelem/kou: mr3ska (IP adresa zaznamenána)
Datum: 2007-08-11, 11:23

tak děkuju za rady, mam to tak jak jsem to potřeboval a eště díky PA3Kovi bezpečnější



Lituji, ale pouze registrovaní uživatelé mohou zasílat příspěvky do této sekce.
This forum powered by Phorum and designed by STaNBoSS.