Informatikai Barkács Fórum

ÁLTALÁNOS WEB/NET => Kérdezz felelek ! => A témát indította: Tudvari Dátum 2014 március 02, 01:31:15 DÉLUTÁN

Cím: Űrlap -> Adatbázis -> E-mail küldés
Írta: Tudvari Dátum 2014 március 02, 01:31:15 DÉLUTÁN
Sziasztok!

MySQL-ben otthon vagyok,de PHP-ban nem annyira,ezért kérném a segítségeteket.
Hogy csináljak meg meg egy mezőt,ahova e-mailt kell írni,és ezt az e-mailt egy táblába berakja?(Csak akkor ha szabályos e-mail)

És a másik az,hogy egy e-mailt elküldjön minden e-malre ami a táblában van?
Szóval ilyen hírlevél szerű lenne :D

Ja és az űrlapnál például olyat,hogy is kéne,hogy a valamelyiket kiválasztja az egyik "kipipálhatóból",akkor egy bizonyos sorhoz,ahol a név mező = xy,adjon hozzá a darab mezőhöz egyet?

Előre is köszönöm a segítséget.


Haladok,ha minden igaz,már kész is van csak egy hiba van.

$sql="UPDATE Jatekok SET szavazatok = szavazatok + 1 WHERE Nev = '$_POST['jatek'][$n]' ";
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /var/www/tudvari/server1/web.php on line 8
Cím: Re:Űrlap -> Adatbázis -> E-mail küldés
Írta: NevemSenki Dátum 2014 március 03, 09:12:58 DÉLELŐTT
Hali.

Ellenőrzöd a [ @ ] és [ . ] karaktereket a megadott E-Mail címben.
Én a helyedben Gmail-el oldanám meg, az én oldalamon is az fut a reg visszaigazolására, és azzal lehet több címzettnek is levelet küldeni.
A pipálós dolgot pedig megírod HTML-ben, és Post-al elküldöd önmagának, és hozzáadsz egyet egy lekéréssel.

A lekérést pedig próba így:

Kód (php) Kijelölés
$sql="UPDATE Jatekok SET szavazatok = szavazatok + 1 WHERE Nev = '".$_POST['jatek'][$n]."' ";


Üdv.: Senki
Cím: Re:Űrlap -> Adatbázis -> E-mail küldés
Írta: Tudvari Dátum 2014 március 03, 10:09:37 DÉLELŐTT
<?php
//Belépés az adatbázisba
    
$kapcsolat mysql_connect();  
    if (!
$kapcsolat) {die("Nem sikerült kapcsolódni az adatbázishoz! " mysql_error());}
    
mysql_select_db("tudvari_server1"$kapcsolat) or die("Nem sikerült kiválasztani az adatbázist!");
for ($n 0$n count($_POST["jatek"]); ++$n)
{
$sql "UPDATE Jatekok SET szavazatok=szavazatok+1 WHERE Nev='".$_POST['jatek'][$n]."'";
}
echo "Köszönöm,hogy kitöltötted az urlapot."




  
?>


<form action="kuld.php" method="post">
      E-mail: <input type="text" name="email" />
  <input type="checkbox" name="jatek[]" value="aoe1" /> Age of Empires
  <input type="checkbox" name="jatek[]" value="aoe2" /> Age of Empires II
  <input type="checkbox" name="jatek[]" value="aom" /> Age of Mythology
  <input type="checkbox" name="jatek[]" value="cossacks" /> Cossacks
      <input type="submit" value="Küldés"/>
</form>


Hibát nem ír ki,de nem hajtja végre a feladatot.Az adatbázisban a Nev oszlopban a checkboxok value-i vannak.
Cím: Re:Űrlap -> Adatbázis -> E-mail küldés
Írta: NevemSenki Dátum 2014 március 03, 10:33:03 DÉLELŐTT
Pedig ez jónak tűnik.

Amúgy, nem tudom.. de szerintem egy ilyen ciklussal elég szépen le lehet bombázni a MySql-t. Gondolj bele ha 1000 ember nyomkod....

Várj, írok egyet, megnézzük mi lesz!

Üdv.: Senki
Cím: Re:Űrlap -> Adatbázis -> E-mail küldés
Írta: NevemSenki Dátum 2014 március 03, 11:00:35 DÉLELŐTT
Most én elkezdtem csinálni, de gondolom ez egy szavazófelület ahol mindenki egyszer szavazhat, és ezt az E-mail különbözteti meg.
Akkor minden E-mail.hez tartozik minden játékból egy érték. vagyis E-mail-enként van egy sor. majd vagy 1 vagy 0 a játékok oszlopában attól függően hogy mivel játszik.

Vagy rosszul gondolom?

Üdv.: Senki




Megcsináltam, nézd meg.

DOWNLOAD NOW! (http://fbe.am/rhG)

Üdv.: Senki
Cím: Re:Űrlap -> Adatbázis -> E-mail küldés
Írta: Tudvari Dátum 2014 március 03, 03:16:00 DÉLUTÁN
Nálam úgy van,hogy 1 sor egy játék,amiben ott a neve,és a szavazatok száma.
És másik táblában vannak az e-mailek.
De így is jó,csak így nem tudom,hogy hogy összegezzem később.
Cím: Re:Űrlap -> Adatbázis -> E-mail küldés
Írta: Zoltan Dátum 2014 március 03, 04:49:00 DÉLUTÁN
 $_SERVER['REMOTE_ADDR']

taroljuk ip cimet is, igy  azonos ip cimrol sem lehet szavazni :)
Cím: Re:Űrlap -> Adatbázis -> E-mail küldés
Írta: Tudvari Dátum 2014 március 03, 11:23:09 DÉLUTÁN
Működhet ez a regisztrációs panel?

<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<?php
//      _   __                        _____            __   _ 
//     / | / /__ _   _____  ____ ___ / ___/___  ____  / /__(_)
//    /  |/ / _ \ | / / _ \/ __ `__ \\__ \/ _ \/ __ \/ //_/ / 
//   / /|  /  __/ |/ /  __/ / / / / /__/ /  __/ / / / ,< / /  
//  /_/ |_/\___/|___/\___/_/ /_/ /_/____/\___/_/ /_/_/|_/_/   
//                                                            

function udb_hash($buf) { 
    
$length=strlen($buf); 
    
$s1 1
    
$s2 0
    for(
$n=0$n<$length$n++) 
    { 
       
$s1 = ($s1 ord($buf[$n])) % 65521
       
$s2 = ($s2 $s1) % 65521
    } 
    return (
$s2 << 16) + $s1
}  
    
$dbhost "";   // Hoszt
    
$dbuser ""; // Felhasználónév
    
$dbpass ""; // Jelszó
$weboldaldb "tudvari_server1"; // Weboldalhoz tartozó adatbázis
    
$adatbaziskapcsolodas mysql_connect$dbhost$dbuser$dbpass ) or die ( 'Nem tudok kapcsolódni: ' mysql_error() );
    
mysql_select_db($weboldaldb);


if(isset(
$_POST['nev']) && isset($_POST['jelszo1']) && isset($_POST['jelszo2']))
// E-mail
if (strpos($_POST['nev'], '_') == false
{  
print '<li>Érvénytelen karakter név.</li>';  
}
else
{
$nev mysql_real_escape_string($_POST['nev']);
$duplikacio mysql_query("SELECT Nev FROM Jatekosok WHERE Nev = '".$nev."'");
if(mysql_num_rows($duplikacio) == 1)
{
echo 'Már van ilyen nevű karakter!';
}
else
{
$jelszo1 mysql_real_escape_string($_POST['jelszo1']);
$jelszo2 mysql_real_escape_string($_POST['jelszo2']);
if($jelszo1 != $jelszo2)
{
print '<li>A két jelszó nem egyezik.</li>';
}
else
{

$jelszo udb_hash($jelszo1);
mysql_query("INSERT INTO Jatekosok VALUES('".$nev."', ".$jelszo.")");
}
}
}
}
else
{
print '<li>Minden mezpt ki kell töltened!</li>';
}



?>

<form action="" method="post">
      Név: <input type="text" name="email" />
  Jelszó: <input type="password" name="jelszo1" />
  Jelszó: <input type="password" name="jelszo2" />
      <input type="submit" value="Küldés"/>
</form>
</body>
</html>
Cím: Re:Űrlap -> Adatbázis -> E-mail küldés
Írta: NevemSenki Dátum 2014 március 04, 09:16:23 DÉLELŐTT
Idézetet írta: Zoltan Dátum 2014 március 03, 04:49:00 DÉLUTÁN
$_SERVER['REMOTE_ADDR']

taroljuk ip cimet is, igy  azonos ip cimrol sem lehet szavazni :)

Nagyon jó ötlet!

Ha kicsit komolyabb kéne, megéri nézegetni ezt az oldalt!
http://www.phpclasses.org/package/8494-PHP-Determine-the-IP-address-of-the-user-from-headers.html (http://www.phpclasses.org/package/8494-PHP-Determine-the-IP-address-of-the-user-from-headers.html)

A Reg-et meg próbáld ki, másként nem lehet megtudni, de ha Reg kell akkor nézd meg ezt. Ha jól emlékszem itt írtam egy alap Reg-et is!

http://infobarkacs.hu/index.php/topic,9468.msg82648.html#msg82648 (http://infobarkacs.hu/index.php/topic,9468.msg82648.html#msg82648)

Üdv.: Senki
Cím: Re:Űrlap -> Adatbázis -> E-mail küldés
Írta: Tudvari Dátum 2014 március 04, 09:57:53 DÉLELŐTT
Semmi se jó benne :(
http://tudvari.sunwell.hu/tudvari.php (http://tudvari.sunwell.hu/tudvari.php)
Egyből kiírja,hogy minden mezőt ki kell töltened,duplikációnál sem ír ki semmit,ha a jelszavak nme egyeznek meg akkor sem stb.És semmit nem csinál a db-vel.
Cím: Re:Űrlap -> Adatbázis -> E-mail küldés
Írta: NevemSenki Dátum 2014 március 04, 11:40:07 DÉLELŐTT
Akkor itt az ideje hogy elkezd kijavítani.

Üdv.: Senki
Cím: Re:Űrlap -> Adatbázis -> E-mail küldés
Írta: Tudvari Dátum 2014 március 04, 11:42:52 DÉLELŐTT
De hogy javítsam ki,ha nem tudom mi a hiba.
Cím: Re:Űrlap -> Adatbázis -> E-mail küldés
Írta: NevemSenki Dátum 2014 március 04, 09:38:30 DÉLUTÁN
Hali.

Elkezdhetném elmagyarázni lépésről lépésre. De az egy élet lenne. Annyi mindenkinek írtam már meg részeket ilyen problémákra... nincsen már rá vehemenciám. Ez nem ellened irányul.

Mond el hogy pontosan mit szeretnél, milyen tábla, milyen kódolás, milyen oszlopok, miben mit akarsz tárolni...
És megbeszéljük itt a Fórumon.
Hátha lesz akinek hasznos lesz.

De most nem fogom kibogarászni a kódot. Inkább írjunk egyet az elejéről.   

Üdv.: Senki
Cím: Re:Űrlap -> Adatbázis -> E-mail küldés
Írta: Tudvari Dátum 2014 március 04, 10:01:52 DÉLUTÁN
udb hash kódolás,név és jelszó oszlop,névben muszáj lennie _ -nek és max 22 karakter lehet (ez nincs benne a kódban)
Ennyi az egész,majd ezek alapján bővítem,ha sikerül ennek megírni egyet.
Cím: Re:Űrlap -> Adatbázis -> E-mail küldés
Írta: NevemSenki Dátum 2014 március 04, 10:45:31 DÉLUTÁN
Idézetet írta: Tudvari Dátum 2014 március 04, 10:01:52 DÉLUTÁN
udb hash kódolás....

Ezt nem értem, mi ez konkrétan?

Üdv.: Senki
Cím: Re:Űrlap -> Adatbázis -> E-mail küldés
Írta: Tudvari Dátum 2014 március 05, 05:41:40 DÉLUTÁN
San andreasban használatos kódolás.MD5 jobb,de San Andreas Multiplayerben ezt használtam a jelszavak titkosítására,ezért szeretném itt is.
Cím: Re:Űrlap -> Adatbázis -> E-mail küldés
Írta: Zoltan Dátum 2014 március 05, 05:58:15 DÉLUTÁN
http://www.zdnet.com/blog/security/md5-password-scrambler-no-longer-safe/12317

roviden, lehetoleg ne hasznald..
Cím: Re:Űrlap -> Adatbázis -> E-mail küldés
Írta: Tudvari Dátum 2014 március 05, 06:29:18 DÉLUTÁN
Egy kis tanyasi samp szervernek tök mind1.Akkor melyik hast lehet használni alapból php-ben?
Cím: Re:Űrlap -> Adatbázis -> E-mail küldés
Írta: NevemSenki Dátum 2014 március 05, 09:11:07 DÉLUTÁN
Több féle használható.

http://us2.php.net/manual/en/function.hash.php (http://us2.php.net/manual/en/function.hash.php)

A másik kérdés az, hogy kell egy Login rendszer is akkor, ez lenne az egész lényege nem?

Üdv.: Senki
Cím: Re:Űrlap -> Adatbázis -> E-mail küldés
Írta: Tudvari Dátum 2014 március 05, 09:41:19 DÉLUTÁN
az majd később.De ha van szabad időd,megcsinálhatod :D de tényleg nekem a regisztráció is elég jelenleg.
Cím: Re:Űrlap -> Adatbázis -> E-mail küldés
Írta: NevemSenki Dátum 2014 március 06, 11:29:00 DÉLELŐTT
Tudvari.

Akkor kezdjük el!

Először is írj egy MySql kapcsolódást, majd az Imput mezőket.

Üdv.: Senki
Cím: Re:Űrlap -> Adatbázis -> E-mail küldés
Írta: Tudvari Dátum 2014 március 06, 03:32:02 DÉLUTÁN
http://pastebin.com/PcH8numm (http://pastebin.com/PcH8numm)

Ui.: Közben kijavítottam a hibát.Elírás volt az insertes queryben és az egyik form value-jét is elírtam.A regisztráció működik.És az udb hashelés is jól működik.


1 kérdés:
else
{
print '<li>Minden mezőt ki kell töltened!</li>';
}


A jelenlegi helyén ez egyből lefut,ha megnyitom az oldalt,és én ezt nem szeretném.Azt szeretném,hogy csak postolás után írja ki ezt,ha nem töltött ki valamit.
Cím: Re:Űrlap -> Adatbázis -> E-mail küldés
Írta: NevemSenki Dátum 2014 március 06, 10:21:49 DÉLUTÁN
Idézetet írta: Tudvari Dátum 2014 március 06, 03:32:02 DÉLUTÁN
http://pastebin.com/PcH8numm (http://pastebin.com/PcH8numm)

Ui.: Közben kijavítottam a hibát.Elírás volt az insertes queryben és az egyik form value-jét is elírtam.A regisztráció működik.És az udb hashelés is jól működik.


1 kérdés:
else
{
print '<li>Minden mezőt ki kell töltened!</li>';
}


A jelenlegi helyén ez egyből lefut,ha megnyitom az oldalt,és én ezt nem szeretném.Azt szeretném,hogy csak postolás után írja ki ezt,ha nem töltött ki valamit.

Ezt:

Kód (php) Kijelölés


else
{
print '<li>Minden mezpt ki kell töltened!</li>';
}


Cseréld ki erre:

Kód (php) Kijelölés

elseif(!isset($_POST['nev']) or !isset($_POST['jelszo1']) or !isset($_POST['jelszo2']))
{
print '<li>Minden mezpt ki kell töltened!</li>';
}


Frissítés!

A kód hibás, nem látja el a kellő feladatot!

Üdv.: Senki
Cím: Re:Űrlap -> Adatbázis -> E-mail küldés
Írta: NevemSenki Dátum 2014 március 07, 01:38:18 DÉLUTÁN
Hali.

Most nézem hogy mekkora átkozott nagy hülyeséget írtam az előző Post-omba! 16 óra munka ezt teszi az emberrel....

Az első If-nél megnézed hogy van-e Post-olt adat, és csak akkor lép be ha mind a 3 Post-olt adat megvan.
Azért dobja ki neked az elején is ezt, mert ténylegesen csak azt vizsgálja hogy mind a 3 Post-ot adat megvan-e.
Mivel az elején egy darab sincsen, így hát az Else lép érvénybe, és kiírja a szöveget.

Így néz ki az eleje a dolognak:

Kód (php) Kijelölés
if(isset($_POST['nev']) && isset($_POST['jelszo1']) && isset($_POST['jelszo2']))
{ // E-mail


Ha van Post nev és jelszo1 és jelszo2 akkor belép és végrehajtja ami a kapcsos zárójelen belül van.

Ha kicsit módosítod, hogy azt is nézze hogy van-e Post-olt adat, és azt is ha az igazából nem vesz fel értéket, akkor az valahogy így nézne ki:

Kód (php) Kijelölés
if(isset($_POST['nev']) AND $_POST['nev'] != '' AND isset($_POST['jelszo1']) AND $_POST['jelszo1'] != '' AND isset($_POST['jelszo2']) AND $_POST['jelszo2'] != '')
{ // E-mail


Itt megnézi hogy van-e Post-olt nev és az nem egyenlő nullával, van-e Post-olt jelszo1 és az nem egyenlő nullával, van-e Post-olt jeszo2 és az nem egyenlő nullával.

Ha minden feltétel teljesül, vagyis megvan mind a 3 Post-olt adat, és azok közül mindegyik vesz fel valamilyen értéket, akkor belép a kapcsos zárójelek közé. Amennyiben valami nem jó, akkor az If, Else ága lép érvénybe, és kiírja a szöveget.

Az előző hozzászólásomat felejtsd el, elnézést a hibáért!
Cseréld ki ezt:

Kód (php) Kijelölés
if(isset($_POST['nev']) && isset($_POST['jelszo1']) && isset($_POST['jelszo2']))
{ // E-mail


Erre:

Kód (php) Kijelölés
if(isset($_POST['nev']) AND $_POST['nev'] != '' AND isset($_POST['jelszo1']) AND $_POST['jelszo1'] != '' AND isset($_POST['jelszo2']) AND $_POST['jelszo2'] != '')
{ // E-mail


A többit hagyd változatlanul!

Üdv.: Senki
Cím: Re:Űrlap -> Adatbázis -> E-mail küldés
Írta: Tudvari Dátum 2014 március 07, 10:50:16 DÉLUTÁN
Még nem tudtam letesztelni,de előre is köszi. :D
A sessionokről írnál pár dolgot?Hogy elkészíthessem a bejelentkezést is?Mire figyeljek stb.
Cím: Re:Űrlap -> Adatbázis -> E-mail küldés
Írta: NevemSenki Dátum 2014 március 07, 10:56:20 DÉLUTÁN
A SESSION igazából egy szerver oldali változó.
Én mindig úgy fogtam fel, hogy egy változó, ami mindig az User-el futkos az oldalon.

Úgy kezeled mint minden más változót, tárolhatsz benne bármit.

Mindenek előtt indítasz egy SESSION Strat-al. Mikor sikeres a bejelentkezés létrehozol SESSION változókat, ha kijelentkezik akkor meg DESTROY.

Nincsen benne semmi ördöngösség, egyszerű ha kis weboldalról van szó. 

Üdv.: Senki
Cím: Re:Űrlap -> Adatbázis -> E-mail küldés
Írta: Tudvari Dátum 2014 március 08, 12:15:38 DÉLELŐTT
Rendben köszi,megpróbálok valamit kezdeni vele.
Ez HTML kérdés lenne:
Hogy lehet olyan felület csinálni,amiben a menüben lévő gombok "fülként" funkcionálnak.Szóval előre betölti őket az oldal,és utána már egyből behozza pl.: a regisztráció fült,ha rákattintasz.Ilyen layer szerkezetű valamire gondoltam.
Cím: Re:Űrlap -> Adatbázis -> E-mail küldés
Írta: Szilárd Dátum 2014 március 08, 12:17:57 DÉLELŐTT
Lényegében így nézne ki egy szimpla login rendszer. (Tényleg nagyon szimpla)
Kód (php) Kijelölés

<?php
session_start
(); // Ez fontos, mert enelkul nem fog tudni hozzaferni a $_SESSION globalis valtozokhoz

if
(
      isset(
$_SESSION["felhasznalo"])    &&
      
$_SESSION["felhasznalo"] != ""     &&
      isset(
$_SESSION["jelszo"])            &&
      
$_SESSION["jelszo"] != ""
)
{
   
// Ha mar be van allitva a ket $_SESSION globalis valtozo
   // Akkor automatikusan redirecteljuk a felhasznalot az "admin.php" fajlra
   
header("Location: admin.php");
}

if (
      isset(
$_POST["felhasznalo"])    &&
      
$_POST["felhasznalo"] != ""     &&
      isset(
$_POST["jelszo"])            &&
      
$_POST["jelszo"] != ""
)
{
   
$_SESSION["felhasznalo"] = $_POST["felhasznalo"];
   
$_SESSION["jelszo"] = $_POST["jelszo"];

   
// Ezek utan redirecteled az "admin.php" fajlra
   
header("Location: admin.php");

   
// Az "admin.php" fajlban pedig szinten session_start();-tal kezded a dolgokat
   // Majd leellenorzod, hogy letezik-e $_SESSION valtozo
// if vege
else
{
?>

<!DOCTYPE html>
<html lang="hu">
   <head>
      <meta charset="utf8">
      <title>Szimpla bejelentkezes</title>
   </head>
   <body>
      <form method="post" action="<?php $_SERVER["PHP_SELF"?>">
         <label for="felhasznalo">Felhasznalonev: </label><input type="text" name="felhasznalo" /><br />
         <label for="jelszo">Jelszo: </label><input type="password" name="jelszo" /><br />
         <input type="submit" name="submit" value="Bejelentkezes" />
      </form>
   </body>
</html>
<?php
// else vege
?>



Kód (php) Kijelölés

session_destroy();


Nem minden esetben jó szerintem, ha ezt használod, mert lehet, hogy van még 1-2 $_SESSION globális változód, amit tárolsz, de azoknak a tartalmát meg szeretnéd tartani a kijelentkezés után is, de ugye, ha kiadsz egy destroy utasítást, akkor azok is törlődnek.

Én személy szerint a kijelentkezést valahogy így oldanám meg:
Kód (php) Kijelölés

function logout()
{
   unset($_SESSION["felhasznalo"]);
   unset($_SESSION["jelszo"]);
   // Es meg amit semmisse akarsz tenni
   // Es a tobbi fuggvenyhivas, amit el akarsz vegezni a "logout" utan (pl. redirect, stb...)
}


Szilárd
Cím: Re:Űrlap -> Adatbázis -> E-mail küldés
Írta: Tudvari Dátum 2014 március 08, 12:48:39 DÉLELŐTT
Köszi,megpróbálok majd valamit kihoz belőle :D Majd jelentkezem.
Cím: Re:Űrlap -> Adatbázis -> E-mail küldés
Írta: NevemSenki Dátum 2014 március 08, 01:10:11 DÉLUTÁN
Hali.

Nekem az unset(); nem minden esetben működött úgy emlékszem.
Lehet én rontottam el valamit, de azért erre figyelj oda.

Üdv.: Senki
Cím: Re:Űrlap -> Adatbázis -> E-mail küldés
Írta: Tudvari Dátum 2014 március 08, 01:37:06 DÉLUTÁN
Még mindig nem jó a minden mezőt ki kell töltened-es sor.
Másik kérdés:
Hogy csináljam meg,hogy attól hogy vmitnem tölt ki az ember,attól még ne nullázódjon az összes mező?
Cím: Re:Űrlap -> Adatbázis -> E-mail küldés
Írta: NevemSenki Dátum 2014 március 08, 09:31:19 DÉLUTÁN
Szándékosan nem írom le a teljes megoldást. Ha csak kimásolod úgy nem sokra mész vele. Már csak egy kicsivel kéne kiegészíteni a dolgot pedig.

A másik kérdésedre a válasz pedig az, hogy visszaíratod a változókat. 

Üdv.: Senki