Jump to content

5kyy8lu3

Members
  • Posts

    257
  • Joined

  • Last visited

Profile Information

  • Gender
    Not Telling

5kyy8lu3's Achievements

Member

Member (2/5)

0

Reputation

  1. Oh, I didn't think about having to check the source to see the output. I was just looking at the browser output and it was blank. This is the output of the bin2hex(): 342048616e64732053756761722026616d703b205370696365 My knowledge on character encodings are admittedly limited Scraping public data is not stealing lol Also, if you want to know more specifically what I'm doing, it's a website that my friends and I use to keep track of the beers we've had for flying saucer's "ufo club". It gets really difficult to know which beers we've had after you get past about 50, so I made this site. To avoid errors with data entry, instead of letting users add new beers that aren't found when they do a search, I scrape saucer's "beer menu" to get a full list of what's in stock. In fact, my "menu" ends up being more accurate than theirs because the printed menus are often a couple days old.
  2. This is what vardump shows: string(25) "4 Hands Sugar & Spice" strlen() shows this: 21 and I get nothing when I bin2hex the containing variable oh and I should mention that when I do the strlen, I'm copy/pasting output of browser back into script to do teh strlen. when I wrap strlen around the variable I get 25 just like vardump shows
  3. Hi. I've been banging my head against the wall with this stupid problem and I just figured out the problem. I scrape data from a website. I query my table to see if I already have everything in there. If no match is found, I insert it. Today, I noticed even after inserting, my script kept telling me there's a new entry I need to insert, despite it actually being there when I physically check the table. But when I echo the query out and run it in phpmyadmin, it finds the row. But not if I run the query directly in my script. Turns out, there are several invisible characters in my string. When I do var_dump(), it says length is 25. When I copy and paste the string into notepad, then back into a fresh php script and wrap it in quotes and echo out a strlen(), I get 21. There are apparently 4 invisible characters that I can't see. I trim() everything, so that apparently didn't catch it. So... is there a good way to "clean" my data before inserting or comparing it to avoid this in the future? This wasted a ton of time and I hope to find a way to clean this junk out of my data. Thanks! It just seems like I run into this sort of thing often when it's data scraped from the web. (breaks my regex! grr!)
  4. Well, I just did this: UPDATE beers SET brewery=TRIM(brewery); And it fixed my problems! I really appreciate the help!
  5. Oooooh, I see what you're asking now. A lot of it was scraped from a website. Some was copy/pasted, and the rest was typed manually. If it's the existing data that's not working correctly, I'm curious why using TRIM on the ORDER BY clause fixes the problem? NEVERMIND, duh, it's trimming the original data's whitespace or whatnot. That was a dumb question, sorry. I didn't realize until after I pushed the button to post. I think I'm going to write a quick script to go through each row and clean it
  6. The data was typed by hand into an HTML form. I even typed the data into phpmyadmin's insert page to insert a row and that did the same thing. When I do this, it doesn't sort correctly: SELECT brewery FROM beers ORDER BY brewery ASC; But when I do this, it sorts correctly: SELECT brewery FROM beers ORDER BY TRIM(brewery) ASC; So I'm fairly sure it's related to invisible characters, but I can't figure out where or how they're getting in there. (or how they're sneaking past php's trim() function)
  7. I just inserted a brand new row using phpmyadmin and that row isn't sorting correctly either. This is weird. The page is rather large with formatting so I cut all the fat out and left the actual function code. <?php session_start(); require("library.php"); $DBA = new DBA; if ( $_GET['post'] == 1 ) { $_SESSION['brewery'] = trim($_POST['brewery']); $q = 'UPDATE beers SET brewery="' . $_SESSION['brewery'] . '" WHERE ID="' . $_SESSION['ID'] . '"'; $results = $DBA->Query($q); $_SESSION['insert_success'] = 'New brewery successfully added!'; header("Location: addbrewery.php"); die(); } else { echo '<html> <head> <title>Add Brewery</title> </head> <body>'; if ( $_SESSION['insert_success'] != '' ) { echo $_SESSION['insert_success']; unset($_SESSION['insert_success']); } echo ' <form action="addbrewery.php?post=1" method="POST"> <input type="text" name="brewery"> <input type="submit" value="Add Brewery!"> </form> </body> </html>'; } ?> Here's a screenshot of the sorting not working for my test row in phpmyadmin (and I USED phpmyadmin to INSERT this specific row)
  8. Hi. Any time I have POST data, I wrap it with php's trim() function to strip whitespace to avoid sorting issues and such in the database. (mysql5 / php5) Despite using php's trim() function, I believe some special characters or spaces are ending up at the beginning of the string. Even editing that row with phpmyadmin doesn't fix the problem which is what's weird. (meaning I manually retype the value in the column in phpmyadmin, then save it, and it still won't sort correctly) Basically, every row sorts correctly except one row that ends up at the very end. If I use mysql's TRIM() in the order by clause like so: ORDER BY TRIM(name) ASC, it actually sorts correctly. So how is something sneaking past php's trim() that mysql's trim() is able to fix? Any ideas? That column is using latin1_swedish_ci collation
  9. you could do something like this: //this goes on your insert5.php page <?php session_start(); if ( $_POST['password'] != $_POST['checkpassword'] ) { $_SESSION['passfail'] = 1; header("Location: http://www.yoursite.com/formpage.php"); } ?> //this is your form page <?php session_start(); if ( $_SESSION['passfail'] != '' ) { echo 'Passwords don't match.'; unset($_SESSION['passfail']); } ?>
  10. not exactly, but like I said, you should echo out both the database values and the user entered credentials and stop the code from executing with die(); and you'll see exactly what's going on by viewing the contents of variables. it's the quickest way to pinpoint where your problem is coming from =) for example, if your login page POSTs to check.php then on THAT page you echo everything out and so after you try logging in you can see where and why things aren't matching up.
  11. hmm that's weird. you did clarify, thanks as far as the ip address showing up blank, i've never seen that. i've seen some weird ones like the one you intentionally masked for privacy reasons lol. not exactly but it was sorta like that. i would start by double checking string length vs your limit set in your table, and add trim() to your ip address to make sure it didn't come out with some hidden ascii white space character or something that's screwing things up. i honestly don't know what to suggest since i've never encountered this. i suppose you could generate a random hash and save it into a cookie and use that to identify your users as a second means so if ip doesn't get logged you can go by the cookie's hash value instead. not the best answer but it would work if you cant' figure out what's wrong lol good luck, mate!
  12. use server variables like $_SERVER['HTTP_REFERER'] to make sure it's coming from the exact page you're wanting it to.
  13. I would start out of echo'ing out variable contents and putting a die(); on the line after, and keep doing that to "debug" your code to see where exactly it's messing up. start with the page you check credentials against the database. echo the password from the database and echo the password from the user and stop the code with die(); and see if they match. check to see that your session variable saying they're "logged in" is set correctly. that's my typical method of debugging stuff. not the greatest method but for me it works.
  14. Hi. Is your problem because your script can't detect improper IP addresses like the one above? How I usually check is to explode the IP address after trimming white space with trim(), then make sure the array has 4 elements, and also check that each element is within the proper range for a IP4 ip address, and check to see that each element in that array is numeric (with something like ctype_digit()). As far as your script not logging them, is $_SERVER['REMOTE_ADDR'] not giving you their IP address? the only thing I can think of for it not logging the IP address correctly is if you have an issue with data type, or more importantly, data size for that column in your table. could you be a little more specific as to your problem?
  15. I use modulus for this problem =) <?php $RowNumber = 0; foreach( $A as $B ) { if ( $RowNumber % 2 ) { $Style='red'; } else { $Style='blue'; } echo '<span class="' . $Style . '">' . $B . '</span>'; $RowNumber++; }
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.