Új hozzászólás Aktív témák
-
Sk8erPeter
nagyúr
válasz Forza_JUVE #6889 üzenetére
Hali!
Szerintem továbbra is maradj a reCAPTCHA-nál.
A korábbi kérdésedre azért nem kaptál itt választ, mert egyben bepakoltál egy tökéletesen formázatlan kódot, így ember legyen a talpán, akinek van kedve ezt végigböngészni (vagy türelme kimásolni, majd berakni NetBeans-projektbe, és ott rámenni az autoformázásra, majd elkezdeni a kutakodást).
Eleve nem is a tutorial szerint használtad a PHP-kódot: [Using reCAPTCHA with PHP].
Itt írja az igen egyszerű példakódot, csupán ezt kell bemásolnod arra az oldalra, ahol a captchát kiíratod, példa:
<html>
<head><title>reCAPTCHA</title></head>
<body> <!-- the body tag is required or the CAPTCHA may not show on some browsers -->
<!-- your HTML content --><form method="post" action="verify.php">
<?php
require_once('recaptchalib.php');
$publickey = "your_public_key"; // you got this from the signup page
echo recaptcha_get_html($publickey);
?>
<input type="submit" />
</form><!-- more of your HTML content -->
</body>
</html>A kiemelt rész a lényeg.
Validáláskor pedig ezt csinálod:
<?php
require_once('recaptchalib.php');
$privatekey = "your_private_key";
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
if (!$resp->is_valid) {
// What happens when the CAPTCHA was entered incorrectly
die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .
"(reCAPTCHA said: " . $resp->error . ")");
} else {
// Your code here to handle a successful verification
}
?>Halál egyszerű.
Én ezt javaslom captchák közül.=======
(#6893) LW:
ha már pastebin-re másolod a kódokat, akkor válaszd is ki a PHP-szintaktikát, hogy megfelelően kiemelje, épp az a lényeg, hogy úgy lesz gyorsan átlátható!Sk8erPeter
-
cucka
addikt
-
cucka
addikt
válasz Forza_JUVE #6910 üzenetére
Hát rosszul írtad
Átirányíthatsz egy relatív útvonalra a szerveren. Példák:
header("Location: xy.html");
header("Location: /some_subdir/index.php?id=1&result=success");Vagy átirányíthasz egy külső oldalra, akkor viszont kell a http elé:
header("Location: http://www.google.com");Az átirányítás után a die() arra van, hogy a szkript maradék része ne fusson le.
A socket-es hibának ehhez nincs semmi köze. -
kadam4
tag
válasz Forza_JUVE #6889 üzenetére
Nem tudom miért nem jelenik meg a kép, de leírom, hogy én hogyan csináltam Captcha kódot.
Kiír egy 6 karakterből álló random kódot, a kódot az inputoknál a code_check-be írja be, a captcha_code-ba pedig te írod majd be.
Küldés után pedig, ezt a kettőt kell összehasonlítani, hogy megegyeznek e, ha igen, akkor beíródik a szöveg, ha meg nem, akkor dobjon egy hibaüzenetet.
Ehhez be kell kapcsolni a php_gd2-t, hogy megjelenjen majd a kép(lehet a tiédnél is be kell).Kód:
<?php
$capt="";
$text=array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
// Karakterek generálása
$texta=$text[rand('0','25')];
$textb=$text[rand('0','25')];
$textc=$text[rand('0','25')];
$textd=$text[rand('0','25')];
$texte=$text[rand('0','25')];
$textf=$text[rand('0','25')];
//Egybe a 6 karakter
$capt=$texta.$textb.$textc.$textd.$texte.$textf;$im = @ imagecreate ( 90 , 30 );// 90*30-as kép generálása
$background_color = imagecolorallocate ( $im , 255, 255, 0 );//háttérszín
$text_color = imagecolorallocate ( $im , rand('0','255') , rand('0','255') , rand('0','255') );//szöveg színe (random)
$border = imagecolorallocate( $im, 255, 0, 0 );imagettftext ( $im , 15 , 2 , 10 , 20 , $text_color , "ttf.ttf" , $texta ); //méret szög xstart ystart szin ttf text
imagettftext ( $im , 15 , 0 , 22 , 20 , $text_color , "ttf.ttf" , $textb );
imagettftext ( $im , 15 , 20 , 37 , 20 , $text_color , "ttf.ttf" , $textc);
imagettftext ( $im , 15 , 0 , 49 , 20 , $text_color , "ttf.ttf" , $textd );
imagettftext ( $im , 15 , 0 , 61 , 20 , $text_color , "ttf.ttf" , $texte );
imagettftext ( $im , 15 , 0 , 70 , 20 , $text_color , "ttf.ttf" , $textf );
imagepng ( $im, 'captcha.png' );
imagedestroy ( $im );// képet ne cashelje a browser
$cachekiller = time();// kiíratás
echo "
<form method='post' action='sajat link'>
<b>Kód:</b><br><img src='captcha.png?{$cachekiller}' alt='' align='absmiddle'>
<input type='hidden' name='code_check' value='$capt' />
<input type='text' name='captcha_code' value='' size='10' maxlength='6'><br>
<input type='submit' value='Küld'></form>";
?>http://www.mobilgyujtemeny.hu
-
trisztan94
őstag
válasz Forza_JUVE #10788 üzenetére
Miért nem adatbázisba írod be? Én is szarakodtam régen a txt-s megoldással, ha csak nem feltétlenül kell, mindenképp ab-ba rakd.
Az meg így néz ki:<?php
//lemented a változót
$email = $_POST['email'];
// csatlakozz az adatbázishoz, vagy include-old a kapcsolatfájlt
//most fejből nem vágom, mindjárt megnézem neked :)
$mysql = mysql_query("INSERT INTO `tábla neve`");
?>Ez így ebben a formában egy elég nagy biztonsági rés, (mint ahogy Soak és Sk8terPeter kolléga korábban többször is felhívta a figyelmemet ) azért írtam így, hogy legyen valami elképzelésed róla
https://heureka-kreativ.hu
-
Sk8erPeter
nagyúr
válasz Forza_JUVE #10796 üzenetére
Bedobhattál volna még legalább 12 hajlongó jelet, akkor sokkal szívesebben segítenénk!
Na jó, inkább ne tedd.Kezdésként:
- legyen egy "id" nevű, INT típusú, auto_increment mező (tehát A_I legyen bepipálva)
- legyen egy "email" nevű, mondjuk VARCHAR típusú, 255 hosszú mező
- lehetne akár még egy "name" mező is, vagy hasonló, hogy névhez is tudd rendelni... (ha elég a 255 karakter, akkor lehet olyan típus, mint az előző)
aztán mentsd el.[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Forza_JUVE #10798 üzenetére
Az csak akkor érdekes, ha valamelyik mező kihagyható (opcionális).
Ezeket szerintem érdemes kötelezően kitöltendőre hagyni.Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Forza_JUVE #10800 üzenetére
Előbb csatlakozni kell a szerverhez, itt van példa erre az ELAVULT módszerre: mysql_connect(). Majd így választod ki ELAVULT módszerrel az adatbázist: mysql_select_db().
Az isset()-en belülre pakold a query-t.
A query-d viszont rossz. A phpmyadminon belül a táblára kattintva menj az Insert/Beszúrás gombra, adj hozzá egy sort admin-felületen, az beilleszt neked egy sort, és megmutatja a hozzá tartozó query-t. Ebből tudsz így tanulni.
Ezt a query-t másold ki, majd alakítsd át megfelelően.De még mindig inkább használd a PDO-t, inkább ahhoz szokj hozzá.
Kiindulásként Tele von Zsinór kolléga erről szóló rövid cikke: [link].[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
-
Sk8erPeter
nagyúr
válasz Forza_JUVE #10810 üzenetére
Az action attribútumba a feldolgozó fájlod elérési útját írd. Ha üresen hagyod, az is valid, az annyit jelent, hogy akkor ugyanabban a fájlban fog megtörténni a feldolgozás, tehát "önmagára" irányítja át az űrlap (form) feldolgozását.
Igen, a "foo" helyére írd az adatbázisod nevét.
A későbbi kódban viszont az `adatbázis_neve` felesleges, mert már korábban kiválasztottad, melyiket fogod használni. Az akkor lenne érdekes, ha nem választanád ki előtte."de pl. a localhost helyére már nem tudom h mit kéne írnom?!"
Ha a helyi szerveren van az adatbázisszerver is, akkor jó a "localhost". Akkor kell ide explicite kiírnod egy másik szerver IP-címét, ha másik szerveren van az adatbázisszerver.
A hostingcégek nagy részénél a "localhost" a jó beállítás, mert az esetek többségében nem külön van az adatbázisszerver.A kódodban lemaradt egy kapcsos zárójel a végéről (ez: }).
Előszűrőnek jó ez a kódformázó is, kidobja a hibákat:
http://beta.phpformatter.com/A kódod remélhetőleg így már jó lesz - nem teszteltem, csak gyorsan hozzádobtam a lezáró kapcsos zárójelet, plusz a másik változót is ($name):
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Not connected : ' . mysql_error());
}
$db_selected = mysql_select_db('foo', $link);
if (!$db_selected) {
die('Can\'t use foo : ' . mysql_error());
}
if (isset($_POST['name']) && isset($_POST['email'])) {
$name = mysql_real_escape_string($_POST['name']);
$email = mysql_real_escape_string($_POST['email']);
$mysql = mysql_query("INSERT INTO `tábla_neve` (`id`, `email`, `name`) VALUES (`$email, $name')");
}Remélem, az id meződ auto_increment.
[ Szerkesztve ]
Sk8erPeter
-
SektorFlop
aktív tag
válasz Forza_JUVE #10817 üzenetére
Lehet butaságot mondok, de ha tárhelyen vagy akkor általában valamiféle IP címet szoktak adni elérési útnak, pl. 10.0.0.3, vagy asszem az ingyenes atw-nél 127.0.0.1., de ez természetesen mindenhol más és más lehet. Localhost-ot helyi hálózat esetén szoktuk használni, Pl USBWebserver esetén ez a pontos adat: localhost, root, usbw.
"Amikor már azt hittem kint vagyok, ezek mindig visszarántottak..."
-
Sk8erPeter
nagyúr
válasz Forza_JUVE #10817 üzenetére
Ez melyik tárhely?
Ezek szerint találtál leírást a megfelelő adatokról...A mysql_errno() és mysql_error() segíthet valamennyit a hibafelderítésben.
Az előzőnél legalább kiderült, hogy eleve csatlakozni nem tudott.Ja, és megmutathatnád a teljes formodat, mert lehet, hogy az isset() feltétel nem teljesül, így meg sem próbálja feltölteni az adatot.
(#10818) SektorFlop :
sok ingyenes tárhelynél pont, hogy megfelelő a "localhost", és ez ugyanaz, mint a 127.0.0.1.
"Localhost-ot helyi hálózat esetén szoktuk használni"
... és a localhost még mindig ugyanaz, mint a 127.0.0.1, és igen, "helyinek" minősül a tárhely szempontjából az adatbázisszerver is, ha ugyanott üzemel (pont erről írtam korábban, hogy általában nem választják szét ingyenes tárhelyeknél, de nagyon sokszor a fizetőseknél sem). Csak a mysql_connect a megfelelő portot (default: 3306) használja a kapcsolódáshoz.[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Forza_JUVE #10821 üzenetére
A query lefuttatása után is használd a mysql_error() és mysql_errno() függvényeket, mondjuk ahogy a példákban látható, hogy kiderüljön, van-e hiba. Legalábbis addig hagyd bent, amíg rá nem jövünk.
Meg van ez a rész:
if (isset($_POST['name']) && isset($_POST['email']))
egészítsd ki egy else ággal is:
if (isset($_POST['name']) && isset($_POST['email'])) {
.......
}
else {
// debuggolás erejéig
echo 'blabla';
}Gondolom egyébként ezek a kódok a fantáziadúsan elnevezett php.php fájlban vannak.
Ezt találtam a Freewebes cuccosról:
http://freeweb.hu/informacio/mysql.htmlMySQL beállítások
Az adatbázis-szolgáltatás kizárólag a FreeWeb-en PHP programokkal érhető el.MySQL adatbázis szerver neve: felhasználóinév.sql.freeweb.hu
MySQL felhasználói neved: freewebes felhasználói neved
MySQL adatbázisod neve: freewebes felhasználói neved
MySQL adatbázisod jelszava: adatbázis jelszavadHa régi Freewebes adatbázisod van, akkor:
MySQL adatbázis szerver neve: sql
MySQL felhasználói neved: freewebes felhasználói neved
MySQL adatbázisod neve: freewebes felhasználói neved
MySQL adatbázisod jelszava: generált sql jelszavad<?
mysql_connect("felhasznaloinev.sql.freeweb.hu","felhasznalo","jelszo");
mysql_select_db("felhasznalo");Neked régi vagy új adatbázisod van?
Jó adatbázist választasz ki?Sk8erPeter
-
trisztan94
őstag
válasz Forza_JUVE #10800 üzenetére
Szerk:
Hoppá,
Úgy néz ki egy korábbit írt ki utolsó hsz-nek, így ez már tárgytalan BocsánatElőbb kapcsolódni kell az adatbázishoz, utána tudsz vele dolgozni, így néz ki://itt lemented a dolgokat, ajánlatos külső fájlba csinálni, mondjuk egy kapcsolodas.php-ba és amikor dolgozol vele akkor csak egy require 'kapcsolodas.php';-t mondasz neki. Ez azért is jobb, mert egy forráskód nézettel nem tudják leolvasni ezeket:D
$host="localhost"; //Host neve - ez mindig localhost, vagy 127.0.0.1
$username="felhnev"; // Mysql Felhneved
$password="jelszo"; // Mysql jelszavad
$db_name="adatbázis"; // adatbázis neve
$tbl_name="tabla"; // Tábla neve
//Csatlakozunk az ab-hoz
mysql_connect("$host", "$username", "$password")or die("Nem lehet csatlakozni");
mysql_select_db("$db_name")or die("AB-t nem lehet kiválasztani");Az insert into `valami`-be az megy, ami a tábla neve. Szóval ha a tábla neve 'pistike', akkor INSERT INTO `pistike` ...$mysql = mysql_query("INSERT INTO `pistike` (email) VALUES (`$email')");Azt hogy honnan tudja, melyik sor kell neki, ha használod akkor kiválasztod azt a sort, ahol pl név = felhnév
Szóval pl, emberkének 'pistike' a felhneve, akkor így néz ki egy ilyen kiválasztás:INSERT INTO `tabla` (email) VALUES ('$email') WHERE username = 'pistike'A Where paranccsal mondod neki, hogy oda insertelje, ahol a felhnév egyezik azzal, hogy pistike. A pistike lehet egy változó is.
Remélem mindent jól és világosan leírtam[ Szerkesztve ]
https://heureka-kreativ.hu
-
SektorFlop
aktív tag
válasz Forza_JUVE #10826 üzenetére
mysql_query("SET NAMES 'UTF8'"); nálam megoldotta a problémát mindig, mikor configolod az adatbázis kapcsolatot tedd hozzá ezt is, még amit szoktam ilyenkor csinálni hogy Notepad++-ban átálítom a fálj kódolását UFT8 DOM nélkülire, őszinte leszek nem tudom hogy ezek pontosan mire valóak, de eddig beváltak.
[ Szerkesztve ]
"Amikor már azt hittem kint vagyok, ezek mindig visszarántottak..."
-
Sk8erPeter
nagyúr
válasz Forza_JUVE #10825 üzenetére
Akkor nem csináltad meg, amit korábban írtam, hogy legyen auto_increment.
Az id márpedig nem baj, hogy ott van, sőt.Karakterkódolásra: jó az utf8_hungarian_ci, de a dokumentumaid is legyenek UTF-8 kódolásúak BOM nélkül, ezt Notepad++-ban tudod lecsekkolni és konvertálni, meg az elején kiadhatnál egy ilyet, a csatlakozás után: SET NAMES utf8
Szerk.: na, most látom, előttem már írták is pont ugyanezeket.
Csak nem "DOM nélkülire", hanem BOM nélkülire.
A DOM kicsit más.[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Forza_JUVE #10830 üzenetére
Szívesen!
Viszont azért arra figyelj, hogy simán lehet, hogy egy e-mail-címet valamilyen oknál fogva többször is fel akarnak használni, azért egy ilyen keresést még az adatbázisba való feltöltés előtt csinálhatnál. Ha nincs még ilyen, akkor mehet, ha van ilyen, akkor visszadobod, hogy "kösz, de ilyen már van, anyáddal szórakozzá'".Most jövök rá, hogy azt elfelejtettem neked mondani, hogy az id mező ne csak auto increment (automatikusan növekvő) legyen, hanem primary key is! (elsődleges kulcs)
Nem kell megadni a query-ben az id-t ilyen esetben, ha amúgy is auto increment.[ Szerkesztve ]
Sk8erPeter
-
CSorBA
őstag
válasz Forza_JUVE #10984 üzenetére
Szia!
Mi a baj a google recaptchával? Szerintem nagyon jól használható és könnyű. Ha elmondod hol akadtál el, tuti segítünk benne. Vagy már az elején gondban vagy? (Most így hirtelen nem tudom én sem, de már csináltam, és 10-15perc alatt implementálni lehetett első nekifutásra is, pedig én is kezdő vagyok)
[ Szerkesztve ]
-
Soak
veterán
válasz Forza_JUVE #10992 üzenetére
php.net -> header .
Felhívnám a figyelmedet erre a részre : Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP.
-
Sk8erPeter
nagyúr
válasz Forza_JUVE #12129 üzenetére
"A flash önmagától is megteszi ezt, vagyis ha lefut, automatikusan ugrik az action scriptbe beírt html oldalra.
Viszont nem szeretném csak ezt a flasht tenni az index.html-re, és a korábbi index.html-t átnevezni/helyezni, mert akkor borul minden hivatkozás, menü, minden."
Szerintem ehhez nem kell PHP, ha a szervereden engedélyezve van a .htaccess használata, akkor legegyszerűbb lenne, ha bemásolnál a gyökérkönyvtárba egy .htaccess fájlt ezzel a tartalommal:# Set the default handler.
DirectoryIndex ezlegyenakezdolapom.html index.html index.phpés akkor innentől kezdve az ezlegyenakezdolapom.html lesz a kezdőlapod, ide berakhatod azt a bizonyos flash-es lejátszást, és az action scriptbe továbbra is beírhatod az index.html-t.
Szerk.: persze az ezlegyenakezdolapom.html-t arra nevezed át, amire csak szeretnéd, de akkor mindkét helyen.
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Forza_JUVE #12131 üzenetére
Szívesen, igen, jól értetted. Majd jelezz vissza, sikerült-e.
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Forza_JUVE #12136 üzenetére
Na, akkor örülök, szívesen!
(#12135) Sk8erPeter :
ehhez még annyit hozzátennék, hogy abban viszont igazad van, hogy jó nagy multidimenziós tömböket passzolgat sokszor a függvényeknek. Ennek mondjuk előnye, hogy csomó minden elérhető ezekből a fv.-ekből.[ Szerkesztve ]
Sk8erPeter
Új hozzászólás Aktív témák
- PlayStation 3
- TCL LCD és LED TV-k
- Nothing Phone (2) - több, mint elsőre látszik
- Fotók, videók mobillal
- LEGO klub
- Kerékpárosok, bringások ide!
- Megérkezett a Corsair új M.2-es SSD-je, és mindennek mondható, csak lassúnak nem
- Forza sorozat (Horizon/Motorsport)
- Politika
- Milyen légkondit a lakásba?
- További aktív témák...
- Asus TUF FA507 - 15.6" IPS 144Hz / Ryzen 7 6800H / 16Gb DDR5 4800MHz / RTX 3050 Ti / 1 ÉV GARANCIA
- NVIDIA Dell RTX 2080 Ti 11GB GDDR6 - Beszámítás: OK
- AKCIÓ, BOLTI ÁR ALATT! tado BASIC Okos Radiátor Termosztát 3db-os
- AKCIÓ, BOLTI ÁR ALATT! Xiaomi HUTT C6 ablaktisztító robot
- Dell Precision 7730 Mobil munkaállomás, 17,3" FULL HD, i7-8850H CPU, 32GB DDR4, 512 GB SSD,P3200 6GB
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Promenade Publishing House Kft.
Város: Budapest