Oficjalne forum pomocy serwisu PUN.pl

Niestety, nikt nie powie Ci czym jest FluxBB - musisz go poznać sam!

Nie jesteś zalogowany na forum.

#1 2016-02-29 16:38:20

Piotr I Jabłonowski
Użytkownik
Dołączył: 2016-02-28
Liczba postów: 6
Windows 8.1Chrome 48.0.2564.116

Dodatkowe opcje przy rejestracji

Witam,
czy byłaby możliwość stworzenia czegoś, co pozwalałoby prócz nazwy użytkownika, e-maila itd. dodawać samemu inne pola przy rejestracji? Jest mi to bardzo potrzebne do mojego forum.


(-) Piotr I Jabłonowski
Król Saarbergii
http://saarbergia.oxn.pl/

Offline

#2 2016-02-29 18:36:53

pro14ab
Moderator
Skąd: C:\users\pro14ab
Dołączył: 2013-01-20
Liczba postów: 1,198
WWW
Windows 7Chrome 48.0.2564.116

Odp: Dodatkowe opcje przy rejestracji

Skryptami tego się nie zrobi  [dblpt]cry[dblpt]


Discord: pro14ab#3318
>> GitHub <<
Polecam

Offline

#3 2016-02-29 19:02:06

ukaszf9
Użytkownik
Dołączył: 2011-08-01
Liczba postów: 1,335
Windows 7Chrome 48.0.2564.116

Odp: Dodatkowe opcje przy rejestracji

Dodać pole to żaden problem, pytanie co chciałbyś z nimi robić i jakie funkcje miałyby pełnić?

Offline

#4 2016-03-01 17:04:38

Piotr I Jabłonowski
Użytkownik
Dołączył: 2016-02-28
Liczba postów: 6
Windows 8.1Chrome 48.0.2564.116

Odp: Dodatkowe opcje przy rejestracji

Nie chodzi mi o tzw. "Pola dodatkowe", możliwe do ustawienia w Profilu, ale o opcje przy rejestracji. Potrzebne mi są do forum Saarbergii, głównie po to, aby przy rejestracji nadawano obywatelstwo i żeby zapytał na przykład w jakim regionie obywatel ma być zameldowany.


(-) Piotr I Jabłonowski
Król Saarbergii
http://saarbergia.oxn.pl/

Offline

#5 2016-03-01 19:55:01

ukaszf9
Użytkownik
Dołączył: 2011-08-01
Liczba postów: 1,335
Windows 7Chrome 48.0.2564.116

Odp: Dodatkowe opcje przy rejestracji

Piotr I Jabłonowski napisał/a:

głównie po to, aby przy rejestracji nadawano obywatelstwo i żeby zapytał na przykład w jakim regionie obywatel ma być zameldowany.

I gdzie te dane miałyby po wypełnieniu wylądować?

Offline

#6 2016-03-01 20:15:29

pro14ab
Moderator
Skąd: C:\users\pro14ab
Dołączył: 2013-01-20
Liczba postów: 1,198
WWW
Windows 7Chrome 48.0.2564.116

Odp: Dodatkowe opcje przy rejestracji

@ukaszf9, eh... w panelu admina możesz dodać "dodatkowe pola" do uzupełnienia przez User i chodzi mu o to by była możliwość uzupełnienia ich przy rejestracji a nie dopiero po rejestracji i zalogowaniu > wejściu w profil


Discord: pro14ab#3318
>> GitHub <<
Polecam

Offline

#7 2016-03-02 09:39:32

ukaszf9
Użytkownik
Dołączył: 2011-08-01
Liczba postów: 1,335
Windows 7Chrome 48.0.2564.116

Odp: Dodatkowe opcje przy rejestracji

Przy rejestracji dodajesz dodatkowe pola (createElement, appendChild, innerHTMl itd.), w momencie kliknięcia na submit rejestrujesz je do ciastka. W chwili, w której użytkownik się zaloguje na forum sprawdzasz wartość ciasteczka i za pomocą Ajaxa wysyłasz zapytanie POST do odpowiedniej sekcji w profilu z tymi wartościami.

Offline

#8 2016-03-02 10:29:26

pro14ab
Moderator
Skąd: C:\users\pro14ab
Dołączył: 2013-01-20
Liczba postów: 1,198
WWW
AndroidChrome 48.0.2564.95

Odp: Dodatkowe opcje przy rejestracji

@ukaszf9, też o tym myślałem, że można cos w cookie zrobic ale ja tego jeszcze nie zrobie. Zastanawia mnie jak zrobic to by po zalogowaniu i po zaladowaniu danych do pola zapisalo te dane.


Discord: pro14ab#3318
>> GitHub <<
Polecam

Offline

#9 2016-03-02 10:57:58

ukaszf9
Użytkownik
Dołączył: 2011-08-01
Liczba postów: 1,335
Windows 7Chrome 48.0.2564.116

Odp: Dodatkowe opcje przy rejestracji

Podeśle przykład wieczorem [sred])

Offline

#10 2016-03-02 15:51:55

Piotr I Jabłonowski
Użytkownik
Dołączył: 2016-02-28
Liczba postów: 6
Windows 8.1Chrome 48.0.2564.116

Odp: Dodatkowe opcje przy rejestracji

Dziękuję, chodzi głównie o to, aby wyświetlać je koło awatara itd.


(-) Piotr I Jabłonowski
Król Saarbergii
http://saarbergia.oxn.pl/

Offline

#11 2016-03-02 17:03:15

ukaszf9
Użytkownik
Dołączył: 2011-08-01
Liczba postów: 1,335
Windows 7Chrome 48.0.2564.116

Odp: Dodatkowe opcje przy rejestracji

function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays*24*60*60*1000));
    var expires = "expires="+d.toUTCString();
    document.cookie = cname + "=" + cvalue + "; " + expires;
}

function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for(var i=0; i<ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1);
        if (c.indexOf(name) == 0) return c.substring(name.length, c.length);
    }
    return "";
}
window.onload = function(){
	if(document.getElementById('navprofile') && getCookie('polaDoWypelnienia') != ""){
		var xhttp;
		var idUser = document.getElementById('navprofile').getElementsByTagName('a')[0].href.split('=')[1];
		if (window.XMLHttpRequest) {
			xhttp = new XMLHttpRequest();
		}
		else {
			xhttp = new ActiveXObject('Microsoft.XMLHTTP');
		}
		var wartoscCookie = getCookie('polaDoWypelnienia').split('@@@');
		xhttp.open('POST', 'profile.php?section=dodatkowe_pola&id='+idUser, true);
		xhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
		
		xhttp.send('form_sent=1&csrf_hash=1c1a85a9558a68b663bb4613dc14d5fa9cc586dc&form%5Bu_pola%5D%5B0%5D='+wartoscCookie[0]+'&form%5Bu_pola%5D%5B1%5D='+wartoscCookie[1]+'&update=Wyślij');
		alert('wyslalem ciastko do profilu');
		setCookie('polaDoWypelnienia', '', 30);
		alert('usunalem ciastko po zapisie');
	}

	if(document.getElementById('punregister')){
		var divRegister = document.createElement('div');
		divRegister.id = 'divRegister';
		document.getElementById('register').appendChild(divRegister);
		var nowe_pola = "<div class=\"inform\">";
		nowe_pola += "<fieldset>";
		nowe_pola += "<legend>Wypełnij pola</legend>";
		nowe_pola += "<div class=\"infldset\">";
		nowe_pola += "<label>Pole pierwsze</label><input type=\"text\" id=\"pole_1\">";
		nowe_pola += "<label>Pole drugie</label><input type=\"text\" id=\"pole_2\">";
		nowe_pola += "</div>";
		nowe_pola += "</fieldset>";
		nowe_pola += "</div>";
		document.getElementById('divRegister').innerHTML = nowe_pola;
		document.getElementById('register').register.onclick = function(){
			pola = document.getElementById('pole_1').value+"@@@"+document.getElementById('pole_2').value;
			setCookie('polaDoWypelnienia', pola, 30);
			alert('zapisalem ciastko');
		}
	}
}

Pierwowzór bo jest problem z dostaniem do hashu --> jakieś pomysły skąd go pobrać by prawidłowo wysłać zapytanie?
csrf_hash=1c1a85a9558a68b663bb4613dc14d5fa9cc586dc
P.S ---> przykład skryptu dla dwóch pól.

Offline

#12 2016-03-02 17:12:33

Piotr I Jabłonowski
Użytkownik
Dołączył: 2016-02-28
Liczba postów: 6
Windows 8.1Chrome 48.0.2564.116

Odp: Dodatkowe opcje przy rejestracji

Niestety nie działa [dblpt](
Kod wyświetla się w stopce, a przy rejestracji nic takiego nie widać.


(-) Piotr I Jabłonowski
Król Saarbergii
http://saarbergia.oxn.pl/

Offline

#13 2016-03-02 18:24:13

pro14ab
Moderator
Skąd: C:\users\pro14ab
Dołączył: 2013-01-20
Liczba postów: 1,198
WWW
Windows 7Chrome 48.0.2564.116

Odp: Dodatkowe opcje przy rejestracji

@Piotr I Jabłonowski, spokojnie to jest hmm... beta (trzeba dodać kilka elementów).
@ukaszf9, jeżeli to było do mnie to nie masz na co liczyć [dblpt]D


Discord: pro14ab#3318
>> GitHub <<
Polecam

Offline

#14 2016-03-05 01:50:12

Baczus
Użytkownik
Skąd: ten spam?
Dołączył: 2010-02-25
Liczba postów: 448
WWW
Windows 7Firefox 44.0

Odp: Dodatkowe opcje przy rejestracji

A ja mam własny kod, też w wersji Beta:

To do ogłoszenia radzę, bo to funkcje:

function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays*24*60*60*1000));
    var expires = "expires="+d.toUTCString();
    document.cookie = cname + "=" + cvalue + "; " + expires;
} 

function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for(var i=0; i<ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1);
        if (c.indexOf(name) == 0) return c.substring(name.length,c.length);
    }
    return "";
}
 
function pieczciastka(){
	var choices = [];
	var els = document.getElementsByName('obywatelstwo');
	for (var i=0;i<els.length;i++){
		if ( els[i].checked ) {
		choices.push(els[i].value);
		}
	}
	var obywatelstwo = choices[0];
	var choices = [];
	var els = document.getElementsByName('region');
	for (var i=0;i<els.length;i++){
		if ( els[i].checked ) {
		choices.push(els[i].value);
		}
	}
	var region = choices[0];	
	setCookie("obywatelstwo", obywatelstwo, 7);
	setCookie("region", region, 7);
}
//Skrypt by Baczus
</script>

A to już do stopki:

<script type="text/javascript">
var rejestracja = document.getElementById("register").outerHTML;
var pkt = rejestracja.indexOf("Rejestruj");
var pkt2 = pkt-47;
var pkt3 = pkt+11;
var newtxt = '<div class="inform"><fieldset><legend>Dodatkowe pola</legend><div class="infldset"><p>Wybierz swoje obywatelstwo: </p><div class="rbox"><label><input type="radio" name="obywatelstwo" value="Polska" checked="checked" />Polska<br /></label><label><input type="radio" name="obywatelstwo" value="Stany Zjednoczone" />Stany Zjednoczone<br /></label><label><input type="radio" name="obywatelstwo" value="Arabia Saudyjska" />Arabia Saudyjska<br /></label></div><p>Region.</p><div class="rbox"><label><input type="radio" name="region" value="Pierwszy region" checked="checked" />Pierwszy region<br /></label><label><input type="radio" name="region" value="Drugi region" />Drugi region<br /></label><label><input type="radio" name="region" value="Trzeci region" />Trzeci region<br /></label></div></div></fieldset></div>';
var newwyw = ' onClick="pieczciastka();"';
var rejestracja = rejestracja.substring(0, pkt2)+newtxt+rejestracja.substring(pkt2,pkt3)+newwyw+rejestracja.substring(pkt3);
document.getElementById("register").innerHTML = rejestracja;
//Skrypt by Baczus
</script>

Co to robi? Skrypt dodaje nam dodatkowe pola przy rejestracji i zapisuje ich wartości do ciastek. Można je później odczytać, np. w taki sposób:

<script type="text/javascript">
var obywatelstwo = getCookie("obywatelstwo");
var region = getCookie("region");
if(obywatelstwo != "" && region != ""){
alert("Jesteś obywatelem: "+obywatelstwo+" , a Twój region to: "+region);
}
//Skrypt by Baczus
</script>

Nie wiem tylko jak później zapisać te ciastka na serwerze, aby mógł je widzieć każdy na stronie. Czyli jak te dane przerzucić z pliku przeglądarki do pliku serwera, w jakie miejsce. Chyba wiecie o co mi chodzi i mam nadzieję, że ktoś pomoże, mówiąc jak to można zrobić [dblpt]mrgreen[dblpt]

Ostatnio edytowany przez Baczus (2016-03-05 01:52:48)

Offline

Użytkowników czytających ten temat: 0, gości: 1
[Bot] ClaudeBot

Stopka

Forum oparte na FluxBB

Darmowe Forum
sfstories - 123wsdasd - minecraftgames - uwmirds - ragelife