Jump to content

maxxd

Gurus
  • Content Count

    988
  • Joined

  • Last visited

  • Days Won

    24

Everything posted by maxxd

  1. Depending on what theme you're using, it's very possible that that exact code is duplicated across multiple templates, so you could be in the wrong file without knowing it. WordPress doesn't exactly require - or even in a lot of ways promote - good practices when it comes to PHP and coding for the web. And some of the Automattic plugins are the worst offenders (WooCommerce, I'm looking at you), so don't assume it's good just because it came from the same company as WP or it's got a lot of stars.
  2. Also, <%php is not the correct opening tag. Use <?php. However, sounds like requinix is right - you're in an admin or restricted area of the template. What's the file name and location you're working with?
  3. Because the database server is on the same machine as the web server. All the time, actually. If you feel strongly about using an IP address you can try http://127.0.0.1 and that should work - although honestly, it's GoDaddy so I can't guarantee it.
  4. OK - sorry. A little closer look at the question you're actually asking. first off, date's format 'h' is a 12-hour format with leading 0, so it won't read as '20'. And MySQL TIME type doesn't include AM/PM. Try changing the date format to 'H:i:s'.
  5. OK - technically, the open brace at // WHAT IS THIS FOR? matches the closing brace at // WHAT? and doesn't really do any harm programmatically (I think...), but wow is that hard to read.
  6. Are you not getting syntax errors with this? From my formatting of the code, you've got mismatched braces all over the place. It's hard to tell because you're bouncing between using braces and not (please stop doing that), but it looks like there are some nesting issues going on unless I'm mistaken. <?php $response = array("error" => false , "success" => false , 'redirect' => false); function post_content($query){ $query_array = array(); foreach( $query as $key => $key_value ) $query_array[] = urlencode( $key ) . '=' . urlencode( $key_value ); return implode( '&', $query_array ); } global $API; $opts = array('http' => array('method' => 'POST',"header" => "Content-type: application/x-www-form-urlencoded\r\nAuthorization:".base64_encode($API["api_key"].":".$API["secret_key"])."\r\n", "content" => post_content($content))); return stream_context_create($opts); // WHAT ARE YOU RETURNING FROM? } //WHERE DOES THIS START? function submit(){ global $API; if(empty($captcha) || $captcha == '' || !isset($captcha)) return array( "error" => "Please solve the captcha."); if (empty($_POST['account']) || !ctype_alnum($_POST['account'])) return array( "error" => "Invalid account id."); $checkAccount = checkAccount($_POST['account']); if (isset($checkAccount["error"])) return array("error" => $checkAccount["error"]); if (isset($checkAccount["success"])){ $account_unique_id = (isset($_SESSION['kal_id'])) ? $_SESSION['kal_id'] : $checkAccount["success"]; $result = json_decode(file_get_contents($API["API_Domain"] . '/api/generate/vote-rewards-token', false, postParams(array('callback' => $API["callback"],'account_unique_id' => $account_unique_id ))) , true); { // WHAT IS THIS FOR? echo '<br><center><h3>Please wait...</h3></center>'; } if (!empty($result)){ if (isset($result["response"])){ if (isset($result["response"]["error"])) return array("error" => $result["response"]["error"]); elseif (isset($result["response"]["success"])) return array("redirect" => '<script type="text/javascript">setTimeout(function () { window.location.href = "'.$result["response"]["success"].'";}, 500)</script>'); } } } // WHAT? } if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['account'])){ $response = submit(); if (isset($response['redirect']) && $response['redirect']){ echo $response['redirect']; die; } }elseif (isset($_GET['return'])){ $result = json_decode(file_get_contents($API["API_Domain"] . '/api/verify/vote-rewards-token', false, postParams(array('returned_code' => $_GET['return']))) , true); if (!empty($result)){ if (isset($result["response"])){ if (isset($result["response"]["error"])) $response['error'] = $result["response"]["error"]; elseif (isset($result["response"]["success"])){ insertRewards($result["response"]["account_unique_id"]); $response['success'] = '<b>Thank you, Your vote has been recorded and the server rank will be updated soon.<b><br />You will receive your rewards in storage of your account.<p>Your next vote in : <b>' . $result["response"]["NextVote"] . '</b></p>'; } } } } ?>
  7. Create a page template in your theme or child theme. Call your functions from there.
  8. Do you really have to support IE6 or is the book you're using just really old? I've not seen that structure in forever; honestly I think that exact code is one of the main reasons jQuery blew up as big as it did as quickly as it did.
  9. I still don't know what the issue was - another form on the same page worked fine. I ended up refactoring to use text links instead of a drop-down and got it working. Thanks for the help!
  10. Hi y'all. So I'm currently working a project in CodeIgniter and I can't get the frigging thing to pass data from a form. At all. My autoload.php: $autoload['helper'] = [ 'text', 'form', 'url', ]; Here's the view code: <header> <div> <?php print form_open('/location/change', ['id'=>'location']); print form_label('Location', 'locations'); print form_dropdown('locations', $locations, (!empty($_SESSION['location'])) ? $_SESSION['location'] : ''); print form_submit('change_location', 'Change'); print form_close(); ?> </div> </header> The route: $route['location/change']['post'] = 'location/change'; And the controller code: class Location extends CI_Controller{ public function change(){ $this->output->enable_profiler(true); $vars = $this->input->post(); print("<pre>".var_export($_POST, true)."</pre>"); print("<pre>".var_export($vars, true)."</pre>"); } } The output: array ( ) array ( ) WTF? This is quite literally the simplest thing to do - I just want to pass data... Any ideas why it's not working?
  11. Not to be a pedantic ass, but sometimes the data is client-created HTML content. Any CMS runs into this, and a lot of application-style sites I've worked on (including my current job) offer clients the option of customizing display text where it makes sense, and it can include lists and images and whatnot.
  12. How do you expect it to print anything when there is no code to output anything? No echo, no return, no nothing. Also, there is no additional code. It's the same code twice. I'll add to benanamen's request and ask that you post the actual code along with the actual problem.
  13. Sorry, folks. Had a typo that apparently I'd reverted without catching it. Fixed now, I think.
  14. OK - starting to hate Laravel. I've cloned my repo into a fresh directory, nuked all the existing containers, images, bridges, volumes, etc. and run a fresh docker-compose up. Everything's fine until I get to the migration and seeding for a specific table. Remember, this is the exact set of files I've been developing with, only in a different folder. Now, the controller says save does not exist. Everything else works - I can run the migration and seed just fine on the other three tables/controllers/models, just no this one. Here's the controller: <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Issue as IssueModel; class Issue extends Controller { } Again, this system works perfectly in the other directory, but I need to be able to move it - the reviewers should be able to clone the repo, run docker-compose up and have a functional system. What the actual f**k am I missing? Steps I've run, in order: composer install sudo mv .env.example .env sed -i -e 's/DB_USERNAME=root/DB_USERNAME=laravel/g' .env sed -i -e 's/DB_PASSWORD=/DB_PASSWORD=laravel/g' .env sed -i -e 's/DB_HOST=127.0.0.1/DB_HOST=database/g' .env sed -i -e 's/DB_PORT=3306/# DB_PORT=3306/g' .env php artisan key:generate php artisan migrate:refresh --seed
  15. Both work from the browser - crap. I forgot about the /api prefix... Let me do some testing. And it appears as though that was it - I'm gonna update my routes/web.php to match the api.php and see how we do. Thank you!
  16. namespace Tests\Unit; use Tests\TestCase; class APITest extends TestCase { protected $db; const DB_URL = "https://sample.testing.edu/db.json"; public function setUp(): void { parent::setUp(); $this->db = json_decode(file_get_contents(self::DB_URL)); } /** * The endpoint under test should return JSON of an array of objects containing users ids * and their total time * [ * {'user_id': <int>, 'seconds_logged': <int>}, * ... other users ... * ] * * @test */ public function it_should_provide_sum_of_all_users_time() { $user = $this->db->users[array_rand($this->db->users)]; $totalSecondsLogged = array_reduce($this->db->timelogs, function ($c, $i) use ($user) { return $c + ($i->user_id == $user->id ? $i->seconds_logged : 0); }, 0); $response = $this->json('GET', '/user-timelogs'); $response->assertJsonFragment([ 'user_id' => $user->id, 'seconds_logged' => $totalSecondsLogged, ]); } } There's more to the file, obviously, but this is the test that's bombing right now. Also, the $this->db stub file contains the same data I'm working with, so there's no issue there, and I think I've rebuilt my composer autoload file like nine or nineteen times, so I'm flat-out stumped. And tired. Mostly tired, but a good portion of that is due to the stumped, so...
  17. I should probably mention that I've been introduced to Laravel but don't code it regularly (I'm much better at SPL than frameworks, which seemed like a good idea until this job hunt), so I'm hoping it's something super simple that I overlooked.
  18. Hi y'all. First off, posting this here to hopefully avoid the noise that's happening in the Applications sub-forums, so mods please feel free to move if it's too inappropriate here. Anyway, I'm currently doing a skills assessment for a potential new job in Laravel - if I wasn't using Laravel I would've been done hours ago, but one of the requirements is Laravel. Honestly, for the most part I dig it - it's pretty simple, despite it's reliance on magic. Anyway, I've written a couple API routes and when I visit them in the browser everything works exactly as expected and desired. However, when I run the pre-built test file, I get a Symfony\Component\HttpKernel\Exception\NotFoundHttpException for /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/RouteCollection.php. The route as defined in api.php: use App\Http\Controllers\User; /** * I tried using a Resource Collection here - there's obviously something about those * that I'm missing, because it actively refused to do anything worthwhile. I'd pass in * UserModel::with('timelogs')->get() like I use in \App\Http\Controllers\User::getTotalSeconds(), * and it didn't care. Just printed out absolute garbage, no matter what I fed to it. */ Route::get('/user-timelogs', function(Request $request) { $u = new User; return $u->getTotalSeconds(); }); And the controller code: namespace App\Http\Controllers; use Illuminate\Http\Request; use App\User as UserModel; class User extends Controller public function getTotalSeconds() { $users = UserModel::with('timelogs')->get(); $ret = []; foreach($users as $user){ array_push($ret, [ 'user_id' => $user->id, 'seconds_logged' => $this->calculateTime($user->timelogs) ]); }; return json_encode($ret); } private function calculateTime($logs) { $totalTime = 0; foreach($logs as $log){ $totalTime += $log->seconds_logged; } return $totalTime; } } The model file for good measure: namespace App; use Illuminate\Notifications\Notifiable; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { use Notifiable; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'name', 'email', 'password', 'id', ]; /** * The attributes that should be hidden for arrays. * * @var array */ protected $hidden = [ 'password', 'remember_token', ]; /** * The attributes that should be cast to native types. * * @var array */ protected $casts = [ 'email_verified_at' => 'datetime', ]; public function timelogs() { return $this->hasMany('App\Timelog'); } } Again, when I visit localhost/api/user-timelogs, the user IDs and correct total of seconds is right there. It's just in the test file that it's an issue. Anybody have any ideas?
  19. You are absolutely correct - thank you for the correction!
  20. Try reading the manual. Barand went along way toward giving you what the rest of us have been saying - you need to run the query.
  21. No. You can get the conflicts value very easily by actually executing the query you've written.
  22. I'm not saying it's not run right, I'm saying it's not run at all. You assign the SQL string to the variable $sql, then check if "0". If "0", you overwrite the value of $sql with a completely different string, which you then execute. If not "0" (will never happen), you print the word "Fail". Read out loud to yourself or someone else (preferably someone patient and understanding) each step of your code. If it helps, write it out in what's called 'psuedo-code' - prose versions of what the code is doing at each step of the process.
  23. OK. First thing I would recommend is to read the documentation. You don't mention if you're using PDO, mysqli, or another DB abstraction, but each has a different usage so it's important you read the documentation for the API you're using. Right now, you define a select query but don't actually run the query. You also have a conditional statement on what is effectively a non-existent comparison, so the logic is flawed. There are a lot of good resources out there, but they're sometimes buried under really bad resources. Ask here - someone will tell which you have. For instance, if you've quoted the full extent of your code here, I'd venture a guess that whatever source you're using to learn is not terribly good.
×
×
  • 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.