• Hi Conor,

    When displaying results of athletes who have an apostrophe in their name (e.g. O’Donnell), I noticed that a backslash is displayed (e.g. O\’Donnell). I understand that the backslash is used to escape the apostrophe, so to remove the backslash I have made the following modifications:

    1. Added “stripSlashes” function to wpa-functions.js:
      stripSlashes: function(str) {
          str=str.replace(/\\'/g,'\'');
          str=str.replace(/\\"/g,'"');
          str=str.replace(/\/g,'');
          str=str.replace(/\\\\/g,'\\');
          return str;
      }
    2. Modified “renderProfileLinkColumn” so that “data” is passed through the stripSlashes function:
      ... + WPA.stripSlashes(data) + ...

    I wouldn’t be surprised if there’s a better way to resolve this, so would be interested in your thoughts of how and where to strip backslashes from data.

    Cheers,
    Clive

    https://www.ads-software.com/plugins/wp-athletics/

Viewing 3 replies - 1 through 3 (of 3 total)
  • Thread Starter stretchwickster

    (@stretchwickster)

    The User Profile is also a place where the backslash is displayed so I had to edit the appropriate line of WPA.Ajax.getUserProfile to correct it:
    jQuery('#wpa-profile-name').html(WPA.stripSlashes(result.name));

    Plugin Author conormccauley

    (@conormccauley)

    Hi Clive,

    Thanks for this. The solution seems to work fine. However if I can avoid doing this in the front end it would be better so I’ll investigate alternatives but for the moment your javascript solution does the job nicely.

    Conor.

    Thread Starter stretchwickster

    (@stretchwickster)

    Hi Conor,

    I believe the storing of a string in an escaped format is not necessary (see https://stackoverflow.com/a/14795856/2047725). Unfortunately, I’m not up to speed in finding my way round the structure of a plugin, but is it possible that backslashes are being passed through to $wpdb->update in the create_user function in wp-athletics-db.php? Interestingly, there’s a comment in the codex that says the $data argument should be raw and not SQL escaped (https://codex.www.ads-software.com/Class_Reference/wpdb#UPDATE_rows). Alternatively, perhaps wp_create_user is adding the backslashes.

    If backslashes can’t be kept out of the database, then the best place to remove them would be immediately after querying the database, with a call to stripslashes. I wasn’t certain where to do this, so I opted for the front-end mod instead, as I could clearly see where the data was being displayed.

    Hope that helps,
    Clive

Viewing 3 replies - 1 through 3 (of 3 total)
  • The topic ‘Stripping slashes from athlete names’ is closed to new replies.