Nie jesteś zalogowany na forum.
Strony: 1
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
Skryptami tego się nie zrobi
Discord: pro14ab#3318
>> GitHub <<
Polecam
Offline
Dodać pole to żaden problem, pytanie co chciałbyś z nimi robić i jakie funkcje miałyby pełnić?
Offline
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
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
@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
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
@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
Podeśle przykład wieczorem
Offline
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
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
Niestety nie działa
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
@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ć
Discord: pro14ab#3318
>> GitHub <<
Polecam
Offline
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ć
Ostatnio edytowany przez Baczus (2016-03-05 01:52:48)
Offline
Strony: 1