LDAP – Create a list of Groupwise users inside an OU

This is just an example illustrating how to connect to the LDAP and get users and groups within a particular OU.

  1. The first part connects to the LDAP
  2. Second part gets all the groups within the specified OU and puts them in an array
  3. Last part gets loops through the groups and gets all the users within each group and puts them in a array

Fill your LDAP connection parameters in this part

This part will get all groups within the OU. You may need to change OU=User Accounts part if your User Accounts are in a different OU e.g. Employee Accounts


This part will get all users within each of the groups


Echoes all the groups and users


 

MySQL remove duplicate data using DISTINCT

In order to explain how DISTINCT works let us see an example

Let’s say we have table of  books storing Book Title and Author details. It is possible that one author can write several books.

book_title——– author

Book A————–Author A

Book B————–Author B

Book C————–Author A

Book D————–Author C

Now we want to write a query which will return all authors

If we run following query

SELECT author from books

We will get

Author A, Author B, Author A, Author C

Note that Author A appears twice

To correct this problem we run below query

SELECT DISTINCT author FROM books

This will return

Author A, Author B, Author C

Clean up Microsoft Word mark up in HTML

People are so used to using Microsoft word to type their content that it is not practical to even think of asking them to change and start thinking from a web perspective to produce a clean HTML and standards compliant markup using Adobe Dreamweaver or some other useful editor.
But the basic purpose of a CMS is to decentralize the content uploading process and to be able to achieve this Microsoft Word is the biggest hurdle CMS users all over are facing.

Till date there is no foolproof solution to this problem. Tools like HTML tidy, htmLawed etc do a descent job however it largely depends on how those tools are configured.
HTML tidy can work at the Apache level which is the most cleanest way whereas htmLawed works at the application level.

I liked htmLawed as it is very simple to use and quite flexible to change its configuration for different applications.
Here are some steps to use htmLawed

  1. Download latest source code of htmLawed and unzip to a local directory
  2. Upload the file htmLawed.php
  3. Include the above file on the page where you will be entering the wysiwyg data in the CMS database using an include statement include(“/path/to/file/htmLawed.php”)
  4. Depending upon the type of application, you can use any of the sample configurations. For other configuration, read the documentation.
    a. For a blog application where you want to accept only a few tags in comments like strong, paragraph, links, underline and italics

    b. For the rest of the articles

How to solve “FATAL ERROR: Cannot redeclare class/function”

This error occures when you have a function or class declared more than once

Scenarios

1. I have a file with all the class declarations which I include after the header.php file. In my scenario it was not possible for me to include the class declaration file before calling the header.

Later on there was a need to access the class functions within the header file. When I included the class within the header.php file, I got this error as the class declaration happened twice.

2. In rare occasions there can be a class name declared more than once.

Solutions

1. Using  multiple includes: Class or functions file can be included multiple times.

2. Using IF statement:

 

Integrating Prestashop shopping cart with existing PHP -MySQL Authentication

Assumptions

Here we are assuming that you are using PHP – MySQL and you have an existing list of clients/users already maintained in a seperate table.

You have your own registration, login and logout mechanisms

Step 1: Prestashop cookies

First let us understand little bit about Prestashop cookies

A customer login prestashop cookie is as below

Cookie name: ps

Cookie content:id_guest%7C1%C2%A4id_customer%7C1%C2%A4customer_lastname%7CLASTNAME%C2%A4customer_firstname%7CFIRSTNAME%C2%A4logged%7C1%C2%A4passwd%7CMD5_PASSWORD%C2%A4email%7CEMAIL%C2%A4

Note: there can be some other parameters as well in the cookie but I have included only the ones which we are interested.

The cookie is ofcourse not readable. It is encrypted and decrypted using Rinjdael or Blowfish.

Apart from that there is also a SALT phrase which is added through the settings.inc.php file

Just for demonstration purposes I have removed the SALT phrase in settings.inc.php (in the config directory) as below

I disabled the cookie encryption and decryption process in Cookie.php file (in the classes directory) as shown below

Comment below lines

 

After doing the above changes, try to login again. If everything is done correctly, you should be able to login successfully. After you login the cookie generated will be readable.

Just to make the cookie bit more clear to us, let us run PHP urldecode

Here’s the output

id_guest|1¤id_customer|1¤customer_lastname|LASTNAME¤customer_firstname|FIRSTNAME¤logged|1¤passwd|MD5_PASSWORD¤email|EMAIL¤

Now this cookie is quite readable and easy to follow.

id_guest=1, id_customer=1, customer_lastname=LASTNAME, etc

Step2: Import your existing users to the prestashop customer table

Export all users from your database and include fields like memberid,firstname, lastname, username, md5(password), salutation and import it into the ps_customer table in prestashop.

Step 3: Single sign on

Once the import-export is done, achieving the single sign on is very easy

All you need to do is when a user logs in on your website apart from the usual cookie which you create, you also need to create one more cookie for the prestashop login (even better is to combine the cookie and name is as ps which might need a corresponding change in your authentication code). The format of this cookie would be same as the one obtained after the urldecode above in Step 1. Cookie name would be ps

Step 4: Enable cookie encryption

Note that we turned off all cookie encryptions in Step 1. We can turn on cookie encryption and decryption provided you are able to replicate the same through a function on your existing site when you create the cookie.

Step 5: Close all loops

A. Disable password reset through Prestashop and send users to your website password reset process and in that process make sure you update password in both the tables

B. When a new user registers make sure you add a new entry in the Prestashop table as well (ps_customer and ps_customer_group)

C. When people login on prestatshop, the form action URL can be changed so that it goes to your custom authentication code which enables you can create the necessary cookies

How to get the ID generated by the last INSERT

Many times there is a need to get the autogenerated ID from the last MySQL INSERT performed.

This ID can then be used to perform some more INSERTs particularly in different tables.

As a typical example lets assume you have members table and a seperate table to store their preference for receiving newsletter.
When a new member registers, we perform the first INSERT to add the member details in the member table.
Now our newsletter table needs the memberID generated from this insert so that we can store their preference (In case you are using their memberID as the primary key instead of the username)

They way to perform this is as below