सामग्री की अखंडता को बनाए रखते हुए गुमनाम उपयोगकर्ताओं को पोस्ट करने की अनुमति कैसे दी जा सकती है?


8

थोड़ी सी पृष्ठभूमि: जैसा कि आप http://charlotte.ebayclassifieds.com पर देखते हैं , यदि आप 'पोस्ट एड' पर क्लिक करते हैं और फिर एक श्रेणी चुनते हैं, तो आप फ़ॉर्म को भर सकते हैं और साइन अप किए बिना सामग्री सबमिट कर सकते हैं। यह सब किया जाता है और ईमेल पते क्षेत्र में सत्यापन ईमेल भेजकर प्रबंधित किया जाता है, जिस पर क्लिक करने पर, उपयोगकर्ता को अपनी सामग्री में हेरफेर करने की अनुमति मिलती है।

क्या Drupal में समान कार्यक्षमता प्राप्त की जा सकती है। मुझे मॉड्यूल लिखने में कोई आपत्ति नहीं है, लेकिन इससे पहले कि मैं यह सुनिश्चित करूं कि मैं पहिया को सुदृढ़ नहीं कर रहा हूं।

मेरे पास http://www.gastonia.com पर मेरे समुदाय के लिए एक Drupal आधारित स्थानीय वर्गीकृत साइट है । साइट अनाम ट्रैफ़िक में बढ़ रही है, लेकिन कुछ उपयोगकर्ता पोस्ट करने के लिए साइन अप कर रहे हैं। कुछ लोगों द्वारा समुदाय के साथ प्रतिक्रिया करने के बाद, लगभग हर कोई कह रहा है कि प्रवेश के लिए एक बाधा एक खाते के लिए साइन अप करने के लिए है, ईमेल की जांच करें, सत्यापन करें, पता लगाएं कि किसी विज्ञापन को कैसे पोस्ट किया जाए, आदि - वास्तव में 7 चरण हैं वास्तव में प्रकाशित होने से पहले विज्ञापन से गुजरना आवश्यक है। यह तो ज्यादा है..

हमने आर्किटेक्चर को फिर से काम में लिया है, जो इसे दो क्लिक तक प्राप्त करने में सक्षम है - पोस्ट करने के लिए क्लिक करें, फिर सहेजें पर क्लिक करें। विशेष रूप से, एक उपयोगकर्ता 'सामग्री जोड़ें' पर क्लिक करता है और नोड / ऐड फॉर्म पॉप अप करता है (नई वास्तुकला में अब केवल एक सामग्री प्रकार है); फिर, जब वे किए जाते हैं, तो वे सहेजें पर क्लिक करते हैं।

मूल रूप से मैं इनलाइन पंजीकरण मॉड्यूल के बारे में सोचता था , लेकिन यह अभी भी डीईवी में है और तर्क वास्तव में समर्थन करने के लिए नहीं है यदि उपयोगकर्ता एक ही ईमेल पते (लॉगजीइन के बिना) के साथ फिर से पोस्ट करने के लिए वापस आता है। मैं इसे बदल सकता था, लेकिन फिर हम एक मॉड्यूल लिखने के लिए वापस आ गए।

मैं नियम के बारे में भी सोचता था - क्या नियम समान कार्यक्षमता को ईबेक्लासीफाइड साइट के रूप में संभाल सकते हैं या मैं क्या करने की कोशिश कर रहा हूं? यह सब नोड / ऐड फॉर्म (सीआरयूडी कार्यक्षमता) में दर्ज एक ईमेल पर आधारित होगा।

कार्यक्षमता को प्राप्त करने के लिए आप क्या दिशा या नुस्खा सुझाएंगे? बेशक यहाँ अंतिम लक्ष्य एनॉन उपयोगकर्ताओं को पोस्ट करने की अनुमति देना है; भविष्य के उपयोग के लिए पर्दे के पीछे एक खाता बनाएं; उन उपयोगकर्ताओं के लिए भी अननोन फॉर्म का उपयोग करने की अनुमति दें, जिनके पास पहले से ही खाते हैं (और तदनुसार सामग्री असाइन करें।) उपयोगकर्ता को साइन अप करने और एक खाते को प्रमाणित करने के लिए वहन की जाने वाली सुरक्षा (स्पैम, बॉट्स) को बनाए रखते हुए।

EDIT: 4/1/2013 गिसले हैनीमायर ने बेनामी प्रकाशन मॉड्यूल को पुनर्जीवित किया है जो यहां और अन्य पदों में वर्णित लक्ष्यों को प्राप्त करने के बहुत करीब है। कृपया मॉड्यूल बग मुक्त और बेहतर बनाने के लिए कुछ सामुदायिक फ़ीडबैक प्रदान करने के लिए थ्रेड में भाग लें: http://drupal.org/node/1957644


मैंने कुछ समय पहले ऐसा ही सवाल पूछा था: drupal.stackexchange.com/questions/25194/…
paul-m

क्या OAuth / OpenID आपके उपयोगकर्ताओं के लिए बहुत अधिक होगा? Janrain यह लॉगिन करने के लिए एक हवा बनाता है।
कैपी ईथरेल

मैंने जेनेरन के बारे में कभी नहीं सुना है, लेकिन मुझे लॉगिन करने के लिए अन्य खातों का उपयोग करने वाले लोगों के विचार पसंद हैं। यहाँ पर DSE की तरह मैं हमेशा अपने google खाते का उपयोग करता हूँ। कि जैसे ही आसान?
नीले 928

जवाबों:


7

मुझे नहीं लगता कि यह अकेले नियमों के साथ संभव है।

सत्यापन ईमेल पते पर कब्जा करने के लिए आपको सबमिशन फ़ॉर्म को बदलना होगा, और आपको स्पैमर्स पर प्रतिबंध लगाने और लौटने वाले आगंतुकों को पहचानने के लिए कुछ तर्क की भी आवश्यकता होगी।

मैं बेनामी प्रकाशन नामक एक परियोजना का अनुरक्षक हूँ । ऐसा लगता है जैसे यह मॉड्यूल वही करता है जो आप चाहते हैं।

यह अभी भी विकास में है, लेकिन एक ड्रुपल 7 संस्करण का उपयोग मेरे कई उत्पादन स्थलों पर बिना किसी मुद्दे के किया गया है। कृपया यह देखें।

आप इस प्रश्न के उत्तर को देखना चाह सकते हैं ।


उस के लिए धन्यवाद, कुछ समय कोड की जाँच करने में खर्च करेगा!
2:

मैंने drupal.org/node/1957644 पर एक धागा बनाया, यह देखने के लिए कि क्या हम उस मॉड्यूल के बारे में सक्रिय चर्चा नहीं कर सकते हैं। इसे पुनर्जीवित करने के लिए धन्यवाद।
Blue928

2

मैंने हाल ही में एक नई मेनू कॉलबैक बनाकर इस परियोजना के समान कुछ हासिल किया - कुछ ऐसा example.com/anon_user- जो एक ऐसा रूप प्रदान करता है जो लॉगिन और पंजीकरण फॉर्म के रूप में दोगुना हो जाता है। यह उपयोगकर्ता को बहुत तेज़ी से पंजीकरण प्रक्रिया के माध्यम से जाने देता है या बहुत अधिक क्रियाएं करने के बिना लॉगिन करने के लिए अनुमति देता है। यह वास्तव में काफी अच्छी तरह से प्राप्त किया गया है।

इसे प्रदर्शित करने के लिए यहां कुछ सरलीकृत कोड दिया गया है:

function example_form($form, &$form_state) {
  // Don't let authenticated users use this form.
  global $user;
  if ($user->uid != 0) {
    return MENU_ACCESS_DENIED;
  }

  // Let the user know what they can do.
  $form['intro']['#markup'] = "Already have an account? Login here. Don't have an account? Enter your email address and create a password and we'll setup an account for you.");

  $form['login'] = array(
    '#type' => 'fieldset',
    'user_email' => array(
      '#type' => 'textfield',
      '#required' => TRUE,
      '#title' => t('E-mail Address'),
    ),
    'user_pass' => array(
      '#type' => 'password',
      '#required' => TRUE,
      '#title' => t('Password'),
    ),
  );

  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => 'Continue',
  );

  return $form;
}

हालाँकि आपको इसकी आवश्यकता है:

function example_form_validate(&$form, &$form_state) {
  if (!valid_email_address($form_state['values']['user_email'])) {
    form_set_error('user_email', 'You entered an invalid email address.');
  }
}

सबमिट हैंडलर में, हमें यह पता लगाना होगा कि क्या यह ईमेल पहले से मौजूद है और उन्हें लॉग इन करने का प्रयास किया जा रहा है। यदि यह मौजूद नहीं है, तो उनके लिए एक खाता बनाने का प्रयास करें।

function example_form_submit(&$form, &$form_state) {
  global $user;

  // Does this account already exist?
  if ($user_name = db_query("SELECT name FROM {users} WHERE mail = :mail", array(':mail' => $form_state['values']['user_email']))->fetchField()) {
    // Attempt to log them in.
    if ($account_id = user_authenticate($user_name, $form_state['values']['user_pass'])) {
      drupal_set_message('You have been logged in.');
      $user = user_load($account_id);
    } else {
      drupal_set_message('You have an account here, but you entered the wrong password.', 'error');
    }
  } 

  // Create the account.
  else {
    // Use their email address as their username. Or handle this with a more complex login form.
    $account_name = str_replace('@', '_', $form_state['values']['user_email']);
    $account = user_save(null, array(
      'name' => $account_name,
      'pass' => $form_state['values']['user_pass'],
      'mail' => $form_state['values']['user_email'],
      'init' => $form_state['values']['user_email'],
      'status' => 1,
      'access' => REQUEST_TIME,
    ));
    // Log 'em in to their new account.
    drupal_set_message('Your account has been created and you have been successfully logged in!');
    );
    $user = user_load(user_authenticate($account->name, $form_state['values']['user_pass']));
  }
}

यह एक बहुत सरल उदाहरण है। आप पासवर्ड आवश्यकताओं, पासवर्ड की पुष्टि 2 क्षेत्र, उपयोगकर्ता नाम फ़ील्ड, बेहतर चेतावनियाँ आदि के माध्यम से जोड़ सकते हैं। यह प्रक्रिया जितनी लंबी होती है, उतने अधिक प्रतिबंध होते हैं।


2

ऐसे कई तरीके हैं जिनसे आप "पंजीकरण बाधा" को कम कर सकते हैं:

  • फेसबुक अकाउंट के साथ लॉगिन की अनुमति देने के लिए फेसबुक कनेक्ट का उपयोग करें (I उपयोग और पसंद fboauth मॉड्यूल)
  • अन्य सामाजिक लॉगिन मॉड्यूल हैं जो google, paypal, yahoo, openid, आदि का समर्थन करते हैं।
  • ईमेल पुष्टिकरण की आवश्यकता नहीं होने के लिए आप पंजीकरण विकल्प को बदल सकते हैं।

अपने अंतिम प्रश्न का उत्तर देने के लिए:

कार्यक्षमता को प्राप्त करने के लिए आप क्या दिशा या नुस्खा सुझाएंगे? बेशक यहाँ अंतिम लक्ष्य एनॉन उपयोगकर्ताओं को पोस्ट करने की अनुमति देना है; भविष्य के उपयोग के लिए पर्दे के पीछे एक खाता बनाएं; उन उपयोगकर्ताओं के लिए भी अननोन फॉर्म का उपयोग करने की अनुमति दें, जिनके पास पहले से ही खाते हैं (और तदनुसार सामग्री असाइन करें।) उपयोगकर्ता को साइन अप करने और एक खाते को प्रमाणित करने के लिए वहन की जाने वाली सुरक्षा (स्पैम, बॉट्स) को बनाए रखते हुए।

मैं "अनाम नोड पंजीकरण" सुविधा का उपयोग करने का सुझाव देता हूं (यदि आप चाहें तो मैं कोड साझा कर सकता हूं)। मैं "नोड ऐड" फ़ॉर्म में "नाम" और "ईमेल पता" फ़ील्ड जोड़ता हूं।

यदि ईमेल पहले से मौजूद नहीं है तो यह एक नया उपयोगकर्ता खाता बनाएगा। यह उपयोगकर्ता नाम बनाने के लिए पहलेनाम का उपयोग करता है और यदि इसे विशिष्ट बनाने के लिए आवश्यक हो तो नंबर जोड़ता है।

पासवर्ड को बदलने के लिए लिंक के साथ नोड सबमिट करने के बाद पासवर्ड को यादृच्छिक रूप से सेट किया जाता है और उपयोगकर्ता को प्रदर्शित किया जाता है।

इसके अलावा, ईमेल पुष्टिकरण स्पैम बॉट को साइन अप करने से नहीं रोकेंगे। मैं स्पैम्बोट मॉड्यूल की अत्यधिक अनुशंसा करता हूं


2
आपने उस कोड का उल्लेख किया है जिसे आप साझा कर सकते हैं। फिर आपने पहले से ही अपने स्वयं के उपयोग के लिए एक मॉड्यूल लिखा था? अगर आप इसे ऑनलाइन कहीं रखना चाहते हैं तो मैं इस पर एक नज़र रखना चाहता हूं। धन्यवाद!
ब्लू 928

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.