Hot answers tagged

23

CS50 course materials will tell you that the permissions need to be set as follows: chmod 711 for directories chmod 644 for images, HTML, CSS, JavaScript chmod 600 for PHP files. In general, this is the correct advice. However, if you have run update50 recently, you should know that there is a bug requiring chmod 640 instead for PHP files. I've posted this ...


7

There is nothing in the spec saying to output the purchase price to the user. That is because such a page is not required. check50 is parsing your index.html page after it makes one purchase, so it should find the current value of those shares 112.00 and the updated value of cash (10000-112) 9,888.00 If I had to guess, I'd say that you aren't formatting ...


6

Use hash instead of encrypt in your register function. I tried it, it worked for me. I was able to sign on as an existing user, or register (and sign on as) a new user. I am not advocating blindly using functions without reading and understanding the doc. Except maybe on a beautiful, sunny, lazy, Sunday afternoon :)


5

Thank Brenda Anderson from Facebook group CS50 for providing a new code for helpers.py


4

To solve this issue, you need 2 variables. Let's call them $userinfo and $cash. First use query() to get cash value from the row with the id that is contained in $_SESSION. Then use this line of code to put the cash value into $cash. $cash = $userinfo[0]["cash"]; Then you can put cash in print, and it will print out the user's cash.


4

I'm not an expert, but apparently it's supposed to be applying MVC. I think the idea behind MVC is dividing the website/web application into 3 interconnected parts. The model (e.g., the database) The view (e.g., the files under templates) The controller (e.g., the files under public) And the reason behind this, as this article suggests, is to separate ...


4

Since "stocks" are in one list and "currentprices" are in another list you will get this result when you use two lists and two loops. One solution would be to use one loop and use currentprices[i] where i is indexed to the row in the "stocks" list. Another option would be to add a "price" key to each "stocks" row in the index() function instead of building ...


4

Inside the function for the respective routes you can just call the function "flash(message)" before the "return redirect()" function, where "message" is the message you want to display. for example: flash ("Bought") return redirect(url_for("index"))


4

The last line in the log about errorhandler is a red herring. More on that later; will edit after proper research. The important line in the log is where it says something about bind parameters (if log was posted as text not image I could cite it here). This result=db.execute("SELECT * FROM users WHERE username = :username") is not proper syntax. When ...


3

According to the docs: You can use the VALUES(col_name) function in the UPDATE clause to refer to column values from the INSERT portion of the INSERT ... ON DUPLICATE KEY UPDATE statement. In other words, VALUES(col_name) in the ON DUPLICATE KEY UPDATE clause refers to the value of col_name that would be inserted, had no duplicate-key conflict ...


3

Let's break it down: preg_match("/^\d+$/", $_POST["shares"]) I think you can tell that $_POST["shares"] is the variable to be mached and the regex string is /^\d+$/. The first and last / are the delimiters of the regex, so we are left with ^\d+$. ^ assert start of subject (or line, in multiline mode) So that marks the beginning of the regex. \d any ...


3

As I told you on Slack: This is the syntax that will work: "INSERT INTO table(field1,field2,field3) VALUES (?,?,?)", $var1, $var2, $var3); and replacing the fields and variables as appropriate.


3

The problem is really about host(smtp.fas.harvard.edu), I had the same problem and here is my decision: I created a new mailbox at gmail, and used it like this: /*Sends a message of $body with subject $subj to $to*/ function email($to, $subj, $body) { // create mail object and set some settings settings $mail = new PHPMailer(); $mail->...


3

The problem is in: $_SESSION["id"] = $row["id"]; it should be: $_SESSION["id"] = $id;


3

The Apache2 web server in the current version of the appliance needs a configuration tweak. Please run the following commands in a terminal in your appliance: sudo a2dismod php5 sudo a2enmod suphp sudo service apache2 restart Then try again to visit http://pset7/ in Chrome in the appliance.


3

shift-reload or ctrl-F5 will clear the browser's cache and (should) reload your css file.


3

The post method is only used when you submit a form. Clicking register doesn't count as a post method, therefore you are skipping the entire section of your code in the post conditional, and the code reads the else statement.


3

I found a solution here. I didn't format the price of stock by usd(). When I changed my code from {{ price }} to {{ price | usd }} in quoted.html, it worked.


3

You can't use the aggregated value in WHERE. WHERE is applied to the table data, and the aggregated values are created later. There is the complementary HAVING clause, processed after aggregation. Use that instead. It's placed directly after the GROUP BY part.


3

Sometimes it's the line before the line that is reported. That is the case here. This line print( len(db_shares ) has unbalanced parens.


3

If lookup() doesn't find the requested symbol, it will return None. That is not explicitly stated in the spec, but that is what the try/except block does in the function. None is not subscriptable, so result["name"] will give an error in the case that lookup hasn't found a stock. Since None is falsey, if not result: will evaluate to true if lookup returned ...


2

Yes your logic is correct, and this is exactly the way the world works. Say I have $20. I buy a diamond for $10. So now I have $10 left. In a week from now, the same diamond, costs $5. But I still have $10 left, not $15. My current cash balance is not determined by the value of the things I bought at past. It stays the same. Now say I also buy this diamond. ...


2

A 503 Service Unavailable error is usually a temporary one, as this one turned to be. It usually indicates that the server is either overloaded or undergoing maintenance. The web server is still accessible, as it's able to display the error page, but the website is not. The best thing to do when encountering this type of error is to try again later. If ...


2

solved via reddit thanks to FReeER for helping me figure out with the long explanations it really helped me https://www.reddit.com/r/cs50/comments/3m6qp0/i_dont_really_understand_what_function/


2

The menu value is not being correctly assigned in the HTML page. The name of the variable needs to be on the element that you want to access. In your code, the menu variable name is assigned to the form element. <form name="menu" action="sell.php" method="POST"> It should be assigned to the <select> tag, since that is the value you want. <...


2

From the pset instructions: Know that index.php is the file that’s loaded by default when you visit a URL like https://ide50-username.cs50.io/. ...which calls (redirects to) login.php (via config.php) if empty($_SESSION["id"]), which presumably it is when first called. Recall from the implemention of indexes() in pset6's server, how index.php or index....


2

Do not use chmod 777 *. That will probably help you to get your site to load, but it is bad for security, and a terrible habit to get into. It's like taking the front door of your house off of its hinges rather than using a key. I have written about these permission problems in many places already, but the short version which should get you running is to do ...


2

Do not use chmod 777 views/*. That will probably help you to get your site to load, but it is bad for security, and a terrible habit to get into. It's like taking the front door of your house off of its hinges rather than using a key. I have written about these permission problems in many places already, but the short version which should get you running is ...


2

REVISED 25-sep-2016 Recap Based on the history of this issue, it has been determined that there is "something wrong" with your workspace. The php5 module is not being loaded in apache50, which makes it impossible to continue with pset7. A lot of time has passed since your workspace was built, so it seems futile to troubleshoot when/why/how this happened. I ...


2

I suggest creating a table, called, for example, transactions. In the table, there are columns: user_id, name of the company, quantity of shares, price of 1 share, date. In this way I will keep transactions of all users in 1 table.


Only top voted, non community-wiki answers of a minimum length are eligible